matplotlib.path
#
Un modulo per gestire le polilinee utilizzate in Matplotlib.
La classe principale per la gestione della polilinea in Matplotlib è Path
. Quasi tutti i disegni vettoriali fanno uso di Path
s da qualche parte nella pipeline di disegno.
Sebbene Path
un'istanza stessa non possa essere disegnata, alcune Artist
sottoclassi, come PathPatch
e PathCollection
, possono essere utilizzate per una comoda Path
visualizzazione.
- classe matplotlib.path. Path ( vertici , codici = None , _interpolation_steps = 1 , closed = False , readonly = False ) [fonte] #
Basi:
object
Una serie di segmenti di linee e curve possibilmente disconnessi, possibilmente chiusi.
L'archiviazione sottostante è costituita da due array numpy paralleli:
vertici : un array float Nx2 di vertici
codes : un array uint8 di lunghezza N di codici di percorso o Nessuno
Questi due array hanno sempre la stessa lunghezza nella prima dimensione. Ad esempio, per rappresentare una curva cubica, è necessario fornire tre vertici e tre
CURVE4
codici.I tipi di codice sono:
STOP
1 vertice (ignorato)Un indicatore per la fine dell'intero percorso (attualmente non richiesto e ignorato)
MOVETO
1 verticePrendi la penna e spostati sul vertice dato.
LINETO
1 verticeTraccia una linea dalla posizione corrente al vertice dato.
CURVE3
1 punto di controllo, 1 punto finaleDisegna una curva di Bézier quadratica dalla posizione corrente, con il dato punto di controllo, al dato punto finale.
CURVE4
2 punti di controllo, 1 endpointDisegna una curva di Bezier cubica dalla posizione corrente, con i punti di controllo dati, al punto finale dato.
CLOSEPOLY
1 vertice (ignorato)Disegna un segmento di linea fino al punto iniziale della polilinea corrente.
Se codes è None, viene interpretato come
MOVETO
seguito da una serie diLINETO
.Gli utenti degli oggetti Path non devono accedere direttamente ai vertici e agli array di codici. Invece, dovrebbero usare
iter_segments
ocleaned
per ottenere le coppie vertice/codice. Ciò aiuta, in particolare, a gestire in modo coerente il caso in cui i codici sono Nessuno.Alcuni comportamenti degli oggetti Path possono essere controllati da rcParams. Vedi gli rcParams le cui chiavi iniziano con 'path.'.
Nota
I vertici e gli array di codici dovrebbero essere trattati come immutabili: ci sono una serie di ottimizzazioni e ipotesi formulate in anticipo nel costruttore che non cambieranno quando i dati cambiano.
Crea un nuovo percorso con i vertici e i codici dati.
- Parametri :
- vertici (N, 2) simili a array
I vertici del percorso, come matrice, matrice mascherata o sequenza di coppie. I valori mascherati, se presenti, verranno convertiti in NaN, che vengono quindi gestiti correttamente da Agg PathIterator e altri consumatori di dati di percorso, ad esempio
iter_segments()
.- codici tipo array o Nessuno, facoltativo
Matrice di numeri interi di lunghezza N che rappresenta i codici del percorso. Se non è Nessuno, i codici devono avere la stessa lunghezza dei vertici. Se None, i vertici verranno trattati come una serie di segmenti di linea.
- _interpolation_steps int, facoltativo
Utilizzato come suggerimento per alcune proiezioni, come Polar, che questo percorso dovrebbe essere interpolato linearmente immediatamente prima del disegno. Questo attributo è principalmente un dettaglio di implementazione e non è destinato all'uso pubblico.
- bool chiuso , facoltativo
Se codici è None e closed è True, i vertici verranno trattati come segmenti di linea di un poligono chiuso. Si noti che l'ultimo vertice verrà quindi ignorato (poiché il codice corrispondente verrà impostato su CLOSEPOLY).
- readonly bool, facoltativo
Fa in modo che il percorso si comporti in modo immutabile e imposta i vertici e i codici come array di sola lettura.
- CLOSEPOLIO = 79 #
- CURVA3 = 3 #
- CURVA4 = 4 #
- LINETO = 2 #
- SPOSTA A = 1 #
- NUM_VERTICES_FOR_CODE = {0: 1, 1: 1, 2: 1, 3: 2, 4: 3, 79: 1} #
Un dizionario che esegue il mapping dei codici Path al numero di vertici previsti dal codice.
- FERMATI = 0 #
- classmethod arc ( theta1 , theta2 , n = None , is_wedge = False ) [fonte] #
Restituisce a
Path
per l'arco di circonferenza unitario dagli angoli theta1 a theta2 (in gradi).theta2 viene scartato per produrre l'arco più corto entro 360 gradi. Cioè, se theta2 > theta1 + 360, l'arco andrà da theta1 a theta2 - 360 e non un cerchio completo più qualche sovrapposizione extra.
Se viene fornito n , è il numero di segmenti di spline da realizzare. Se n non viene fornito, il numero di segmenti spline viene determinato in base al delta tra theta1 e theta2 .
Masionobe, L. 2003. Disegnare un arco ellittico utilizzando polilinee, curve di Bezier quadratiche o cubiche .
- classmethod circle ( center = (0.0, 0.0) , radius = 1.0 , readonly = False ) [fonte] #
Restituisce a
Path
che rappresenta un cerchio di raggio e centro dati.- Parametri :
- center (float, float), predefinito: (0, 0)
Il centro del cerchio.
- raggio mobile, predefinito: 1
Il raggio del cerchio.
- sola lettura bool
Se il percorso creato deve avere l'argomento "sola lettura" impostato durante la creazione dell'istanza Path.
Appunti
Il cerchio viene approssimato utilizzando 8 curve di Bezier cubiche, come descritto in
- clean ( transform = None , remove_nans = False , clip = None , * , simply = False , curves = False , stroke_width = 1.0 , snap = False , sketch = None ) [fonte] #
Restituisce un nuovo percorso con vertici e codici puliti in base ai parametri.
Guarda anche
Path.iter_segments
per i dettagli sugli argomenti delle parole chiave.
- clip_to_bbox ( bbox , inside = True ) [fonte] #
Aggancia il percorso al riquadro di delimitazione specificato.
Il percorso deve essere costituito da uno o più poligoni chiusi. Questo algoritmo non si comporterà correttamente per i percorsi non chiusi.
Se all'interno è
True
, agganciare all'interno della scatola, altrimenti all'esterno della scatola.
- tipo_codice #
alias di
uint8
- codici proprietà #
L'elenco dei codici in
Path
un array numpy 1D. Ogni codice è uno traSTOP
,MOVETO
,LINETO
,CURVE3
o . Per i codici che corrispondono a più di un vertice ( e ), tale codice verrà ripetuto in modo che la lunghezza di e sia sempre la stessa.CURVE4
CLOSEPOLY
CURVE3
CURVE4
vertices
codes
- contiene_percorso ( percorso , trasformazione = Nessuno ) [fonte] #
Restituisce se questo percorso (chiuso) contiene completamente il percorso specificato.
Se transform non è
None
, il percorso verrà trasformato prima di verificare il contenimento.
- contiene_punto ( punto , trasformazione = Nessuno , raggio = 0.0 ) [fonte] #
Restituisce se l'area racchiusa dal percorso contiene il punto specificato.
Il percorso è sempre considerato chiuso; cioè se l'ultimo codice non è CLOSEPOLY si assume un segmento implicito che collega l'ultimo vertice al primo vertice.
- Parametri :
- punto (float, float)
Il punto (x, y) da controllare.
- trasformare
matplotlib.transforms.Transform
, facoltativo In caso contrario
None
, il punto verrà confrontato conself
trasformato per trasformata ; cioè per un controllo corretto, transform dovrebbe trasformare il percorso nel sistema di coordinate del punto .- raggio mobile, predefinito: 0
Aggiungi un ulteriore margine sul percorso nelle coordinate del punto . Il percorso viene esteso tangenzialmente di raggio/2 ; ad esempio, se disegnassi il percorso con una larghezza di linea di radius , tutti i punti sulla linea sarebbero comunque considerati contenuti nell'area. Al contrario, i valori negativi restringono l'area: i punti sulla linea immaginaria saranno considerati al di fuori dell'area.
- Resi :
- bool
Appunti
L'attuale algoritmo ha alcune limitazioni:
Il risultato è indefinito per i punti esattamente al confine (cioè al percorso spostato di raggio/2 ).
Il risultato è indefinito se non c'è un'area chiusa, cioè tutti i vertici sono su una linea retta.
Se le linee di delimitazione iniziano a incrociarsi a causa dello spostamento del raggio , non è garantito che il risultato sia corretto.
- contiene_punti ( punti , trasformazione = Nessuno , raggio = 0.0 ) [fonte] #
Restituisce se l'area racchiusa dal percorso contiene i punti dati.
Il percorso è sempre considerato chiuso; cioè se l'ultimo codice non è CLOSEPOLY si assume un segmento implicito che collega l'ultimo vertice al primo vertice.
- Parametri :
- matrice di punti (N, 2).
I punti da controllare. Le colonne contengono valori x e y.
- trasformare
matplotlib.transforms.Transform
, facoltativo In caso contrario
None
, i punti verranno confrontati conself
trasformati per trasformata ; cioè per un controllo corretto, transform dovrebbe trasformare il percorso nel sistema di coordinate dei punti .- raggio mobile, predefinito: 0
Aggiungi un ulteriore margine sul percorso in coordinate di punti . Il percorso viene esteso tangenzialmente di raggio/2 ; ad esempio, se disegnassi il percorso con una larghezza di linea di radius , tutti i punti sulla linea sarebbero comunque considerati contenuti nell'area. Al contrario, i valori negativi restringono l'area: i punti sulla linea immaginaria saranno considerati al di fuori dell'area.
- Resi :
- lunghezza-N matrice booleana
Appunti
L'attuale algoritmo ha alcune limitazioni:
Il risultato è indefinito per i punti esattamente al confine (cioè al percorso spostato di raggio/2 ).
Il risultato è indefinito se non c'è un'area chiusa, cioè tutti i vertici sono su una linea retta.
Se le linee di delimitazione iniziano a incrociarsi a causa dello spostamento del raggio , non è garantito che il risultato sia corretto.
- copia ( ) [fonte] #
Restituisce una copia superficiale di
Path
, che condividerà i vertici e i codici con la sorgentePath
.
- deepcopy ( memo = Nessuno ) [fonte] #
Restituisci una copia profonda del file
Path
. IlPath
non sarà di sola lettura, anche se la fonte loPath
è.
- get_extents ( transform = None , ** kwargs ) [fonte] #
Ottieni Bbox del percorso.
- Parametri :
- trasformare matplotlib.transforms.Transform, facoltativo
Trasforma da applicare al percorso prima di calcolare le estensioni, se presenti.
- **kwargs
Inoltrato a
iter_bezier
.
- Resi :
- matplotlib.transforms.Bbox
Le estensioni del percorso Bbox([[xmin, ymin], [xmax, ymax]])
- tratteggio statico ( tratteggio , densità = 6 ) [fonte] #
Dato un identificatore di tratteggio, hatchpattern , genera un Path che può essere utilizzato in un modello di tratteggio ripetuto. densità è il numero di linee per unità di quadrato.
- interpolato ( passi ) [fonte] #
Restituisce un nuovo percorso ricampionato alla lunghezza N x passaggi.
I codici diversi da LINETO non vengono gestiti correttamente.
- intersects_bbox ( bbox , filled = True ) [fonte] #
Restituisce se questo percorso interseca un dato
Bbox
.Se filled è True, anche questo restituisce True se il percorso racchiude completamente
Bbox
(cioè, il percorso viene trattato come riempito).Il riquadro di delimitazione è sempre considerato pieno.
- intersects_path ( altro , riempito = True ) [fonte] #
Restituisce se questo percorso interseca un altro dato percorso.
Se filled è True, anche questo restituisce True se un percorso racchiude completamente l'altro (cioè, i percorsi sono trattati come pieni).
- iter_bezier ( ** kwargs ) [fonte] #
Itera su ogni curva di bezier (linee incluse) in un percorso.
- Parametri :
- **kwargs
Inoltrato a
iter_segments
.
- Rendimenti :
- B matplotlib.bezier.BezierSegment
Le curve di bezier che compongono il percorso corrente. Si noti in particolare che i punti indipendenti sono curve di bezier di ordine 0 e le linee sono curve di bezier di ordine 1 (con due punti di controllo).
- codice Percorso.codice_tipo
Il codice che descrive quale tipo di curva viene restituita. Path.MOVETO, Path.LINETO, Path.CURVE3, Path.CURVE4 corrispondono a curve di bezier con 1, 2, 3 e 4 punti di controllo (rispettivamente). Path.CLOSEPOLY è un Path.LINETO con i punti di controllo scelti correttamente in base ai punti di inizio/fine del tratto corrente.
- iter_segments ( transform = None , remove_nans = True , clip = None , snap = False , stroke_width = 1.0 , simply = None , curves = True , sketch = None ) [fonte] #
Itera su tutti i segmenti di curva nel percorso.
Ogni iterazione restituisce un pair , dove è una sequenza di 1-3 coppie di coordinate ed è un codice.
(vertices, code)
vertices
code
Path
Inoltre, questo metodo può fornire una serie di ripuliture e conversioni standard al percorso.
- Parametri :
- trasformare Nessuno o
Transform
In caso contrario, la trasformazione affine data verrà applicata al percorso.
- remove_nans bool, facoltativo
Se rimuovere tutti i NaN dal percorso e ignorarli utilizzando i comandi MOVETO.
- clip Nessuno o (float, float, float, float), facoltativo
Se non è None, deve essere una quattro tupla (x1, y1, x2, y2) che definisce un rettangolo in cui ritagliare il tracciato.
- snap Nessuno o bool, facoltativo
Se True, aggancia tutti i nodi ai pixel; se false, non scattarle. Se Nessuno, esegue lo snap se il percorso contiene solo segmenti paralleli agli assi x o y e non più di 1024 di essi.
- stroke_width float, facoltativo
La larghezza del tratto disegnato (utilizzato per l'aggancio al percorso).
- semplificare None o bool, facoltativo
Se semplificare il percorso rimuovendo i vertici che non ne influenzano l'aspetto. Se None, utilizzare l'
should_simplify
attributo. Vedere anchercParams["path.simplify"]
(predefinito:True
) ercParams["path.simplify_threshold"]
(predefinito:0.111111111111
).- curve bool, facoltativo
Se True, i segmenti di curva verranno restituiti come segmenti di curva. Se False, tutte le curve verranno convertite in segmenti di linea.
- schizzo Nessuno o sequenza, facoltativo
Se diverso da Nessuno, deve essere una tupla tripla della forma (scala, lunghezza, casualità), che rappresenta i parametri dello schizzo.
- trasformare Nessuno o
- classmethod make_compound_path ( * args ) [fonte] #
Crea un percorso composto da un elenco di
Path
oggetti. Rimuove alla cieca tuttiPath.STOP
i punti di controllo.
- metodo di classe make_compound_path_from_polys ( XY ) [ fonte] #
Crea un oggetto tracciato composto per disegnare un numero di poligoni con un numero uguale di lati XY è un array di vertici (numpolys x numsides x 2). L'oggetto restituito è un file
Path
.( Codice sorgente , png )
- proprietà semplifica_soglia #
La frazione di una differenza di pixel al di sotto della quale i vertici verranno semplificati.
- to_polygons ( transform = None , width = 0 , height = 0 , closed_only = True ) [fonte] #
Converti questo percorso in un elenco di poligoni o polilinee. Ogni poligono/polilinea è un array Nx2 di vertici. In altre parole, ogni poligono non ha
MOVETO
istruzioni o curve. Questo è utile per la visualizzazione in backend che non supportano percorsi composti o curve di Bezier.Se la larghezza e l' altezza sono entrambe diverse da zero, le linee verranno semplificate in modo che i vertici al di fuori di (0, 0), (larghezza, altezza) vengano tagliati.
Se closed_only è
True
(predefinito), verranno restituiti solo i poligoni chiusi, con l'ultimo punto uguale al primo punto. Eventuali polilinee non chiuse nel percorso verranno chiuse in modo esplicito. Se closed_only èFalse
, tutti i poligoni non chiusi nel percorso verranno restituiti come poligoni non chiusi e i poligoni chiusi verranno restituiti esplicitamente chiusi impostando l'ultimo punto sullo stesso valore del primo punto.
- trasformato ( trasformare ) [fonte] #
Restituisce una copia trasformata del percorso.
Guarda anche
matplotlib.transforms.TransformedPath
Una classe di percorso specializzata che memorizzerà nella cache il risultato trasformato e si aggiornerà automaticamente quando la trasformazione cambia.
- classmethod unit_circle ( ) [fonte] #
Restituisce la sola lettura
Path
della circonferenza unitaria.Per la maggior parte dei casi,
Path.circle()
sarà quello che vuoi.
- classmethod unit_circle_righthalf ( ) [fonte] #
Restituisce a
Path
della metà destra di un cerchio unitario.Vedere
Path.circle
per il riferimento sull'approssimazione utilizzata.
- classmethod unit_rectangle ( ) [fonte] #
Restituisce
Path
un'istanza del rettangolo unitario da (0, 0) a (1, 1).
- classmethod unit_regular_asterisk ( numVertici ) [fonte] #
Restituisce a
Path
per un asterisco regolare unitario con il dato numVertices e il raggio di 1.0, centrato su (0, 0).
- classmethod unit_regular_polygon ( numVertici ) [fonte] #
Restituisce
Path
un'istanza per un poligono regolare unitario con il dato numVertices tale che il cerchio circoscritto abbia raggio 1.0, centrato su (0, 0).
- classmethod unit_regular_star ( numVertici , innerCircle = 0.5 ) [fonte] #
Restituisce a
Path
per una stella regolare unitaria con il dato numVertices e il raggio di 1.0, centrato su (0, 0).
- classmethod wedge ( theta1 , theta2 , n = None ) [fonte] #
Restituisce a
Path
per il cuneo del cerchio unitario dagli angoli theta1 a theta2 (in gradi).theta2 viene scartato per produrre il cuneo più corto entro 360 gradi. Cioè, se theta2 > theta1 + 360, il cuneo sarà da theta1 a theta2 - 360 e non un cerchio completo più qualche sovrapposizione extra.
Se viene fornito n , è il numero di segmenti di spline da realizzare. Se n non viene fornito, il numero di segmenti spline viene determinato in base al delta tra theta1 e theta2 .
Vedere
Path.arc
per il riferimento sull'approssimazione utilizzata.
- matplotlib.percorso. get_path_collection_extents ( master_transform , percorsi , trasformazioni , offset , offset_transform ) [fonte] #
Data una sequenza di
Path
s,Transform
s oggetti e offset, come trovato in aPathCollection
, restituisce il riquadro di delimitazione che li incapsula tutti.- Parametri :
Appunti
Il modo in cui i percorsi , le trasformazioni e gli offset sono combinati segue lo stesso metodo delle raccolte: ognuno viene iterato in modo indipendente, quindi se hai 3 percorsi, 2 trasformazioni e 1 offset, le loro combinazioni sono le seguenti:
(LA, LA, LA), (SI, SI, LA), (DO, LA, LA)