matplotlib.path
#
Un module pour gérer les polylignes utilisées dans Matplotlib.
La classe principale pour la gestion des polylignes dans Matplotlib est Path
. Presque tous les dessins vectoriels utilisent Path
s quelque part dans le pipeline de dessin.
Bien qu'une Path
instance elle-même ne puisse pas être dessinée, certaines Artist
sous-classes, telles que PathPatch
et PathCollection
, peuvent être utilisées pour une Path
visualisation pratique.
- classe matplotlib.path. Chemin ( sommets , codes = Aucun , _interpolation_steps = 1 , fermé = Faux , lecture seule = Faux ) [source] #
Socles :
object
Une série de segments de ligne et de courbe éventuellement déconnectés, éventuellement fermés.
Le stockage sous-jacent est composé de deux tableaux numpy parallèles :
sommets : un tableau flottant Nx2 de sommets
codes : un tableau uint8 de longueur N de codes de chemin, ou Aucun
Ces deux tableaux ont toujours la même longueur dans la première dimension. Par exemple, pour représenter une courbe cubique, vous devez fournir trois sommets et trois
CURVE4
codes.Les types de codes sont :
STOP
1 sommet (ignoré)Un marqueur pour la fin du chemin entier (actuellement non requis et ignoré)
MOVETO
1 sommetPrenez le stylo et déplacez-vous vers le sommet donné.
LINETO
1 sommetTracez une ligne de la position actuelle au sommet donné.
CURVE3
1 point de contrôle, 1 point finalDessinez une courbe de Bézier quadratique à partir de la position actuelle, avec le point de contrôle donné, jusqu'au point final donné.
CURVE4
2 points de contrôle, 1 point finalDessinez une courbe de Bézier cubique à partir de la position actuelle, avec les points de contrôle donnés, jusqu'au point final donné.
CLOSEPOLY
1 sommet (ignoré)Dessinez un segment de ligne jusqu'au point de départ de la polyligne courante.
Si codes est Aucun, il est interprété comme
MOVETO
suivi d'une série deLINETO
.Les utilisateurs d'objets Path ne doivent pas accéder directement aux sommets et aux tableaux de codes. Au lieu de cela, ils doivent utiliser
iter_segments
oucleaned
pour obtenir les paires sommet/code. Cela aide, en particulier, à gérer de manière cohérente le cas où les codes sont Aucun.Certains comportements des objets Path peuvent être contrôlés par rcParams. Voir les rcParams dont les clés commencent par 'path.'.
Noter
Les sommets et les tableaux de codes doivent être traités comme immuables - il existe un certain nombre d'optimisations et d'hypothèses faites à l'avance dans le constructeur qui ne changeront pas lorsque les données changeront.
Créez un nouveau chemin avec les sommets et les codes donnés.
- Paramètres :
- sommets (N, 2) en forme de tableau
Les sommets du chemin, sous forme de tableau, de tableau masqué ou de séquence de paires. Les valeurs masquées, le cas échéant, seront converties en NaN, qui sont ensuite gérées correctement par Agg PathIterator et d'autres consommateurs de données de chemin, tels que
iter_segments()
.- codes de type tableau ou Aucun, facultatif
Tableau d'entiers de longueur N représentant les codes du chemin. Si ce n'est pas Aucun, les codes doivent avoir la même longueur que les sommets. Si aucun, les sommets seront traités comme une série de segments de ligne.
- _interpolation_steps entier , facultatif
Utilisé comme indice pour certaines projections, telles que Polar, que ce chemin doit être interpolé linéairement immédiatement avant le dessin. Cet attribut est principalement un détail de mise en œuvre et n'est pas destiné à un usage public.
- booléen fermé , facultatif
Si codes est Aucun et fermé est Vrai, les sommets seront traités comme des segments de ligne d'un polygone fermé. Notez que le dernier sommet sera alors ignoré (car le code correspondant sera défini sur CLOSEPOLY).
- booléen en lecture seule , facultatif
Fait en sorte que le chemin se comporte de manière immuable et définit les sommets et les codes comme des tableaux en lecture seule.
- CLOSEPOLIE = 79 #
- COURBE3 = 3 #
- COURBE4 = 4 #
- LIGNE À = 2 #
- MOVETO = 1 #
- NUM_VERTICES_FOR_CODE = {0 : 1, 1 : 1, 2 : 1, 3 : 2, 4 : 3, 79 : 1} #
Un dictionnaire mappant les codes Path au nombre de sommets attendus par le code.
- ARRÊT = 0 #
- arc de méthode de classe ( theta1 , theta2 , n = None , is_wedge = False ) [source] #
Renvoie a
Path
pour l'arc de cercle unitaire des angles theta1 à theta2 (en degrés).theta2 est déroulé pour produire l'arc le plus court à moins de 360 degrés. Autrement dit, si theta2 > theta1 + 360, l'arc sera de theta1 à theta2 - 360 et non un cercle complet plus un chevauchement supplémentaire.
Si n est fourni, il s'agit du nombre de segments de spline à créer. Si n n'est pas fourni, le nombre de segments de spline est déterminé en fonction du delta entre theta1 et theta2 .
- cercle de méthode de classe ( center = (0.0, 0.0) , radius = 1.0 , readonly = False ) [source] #
Renvoie a
Path
représentant un cercle d'un rayon et d'un centre donnés.- Paramètres :
- centre (float, float), par défaut : (0, 0)
Le centre du cercle.
- rayon flottant, par défaut : 1
Le rayon du cercle.
- booléen en lecture seule
Si le chemin créé doit avoir l'argument "readonly" défini lors de la création de l'instance Path.
Remarques
Le cercle est approximé à l'aide de 8 courbes de Bézier cubiques, comme décrit dans
- nettoyé ( transform = None , remove_nans = False , clip = None , * , simplifie = False , curves = False , stroke_width = 1.0 , snap = False , sketch = None ) [source] #
Renvoie un nouveau Path avec des sommets et des codes nettoyés selon les paramètres.
Voir également
Path.iter_segments
pour plus de détails sur les arguments des mots-clés.
- clip_to_bbox ( bbox , inside = True ) [source] #
Découpez le chemin vers la boîte englobante donnée.
Le chemin doit être composé d'un ou plusieurs polygones fermés. Cet algorithme ne se comportera pas correctement pour les chemins non fermés.
Si l'intérieur est
True
, clipsez à l'intérieur de la boîte, sinon à l'extérieur de la boîte.
- type_code #
pseudonyme de
uint8
- codes de propriété #
La liste des codes dans le
Path
sous forme de tableau numpy 1D. Chaque code est l'un desSTOP
,MOVETO
,LINETO
,CURVE3
ou . Pour les codes qui correspondent à plus d'un sommet ( et ), ce code sera répété afin que la longueur de et soit toujours la même.CURVE4
CLOSEPOLY
CURVE3
CURVE4
vertices
codes
- contains_path ( path , transform = None ) [source] #
Retourne si ce chemin (fermé) contient complètement le chemin donné.
Si transform n'est pas
None
, le chemin sera transformé avant la vérification du confinement.
- contains_point ( point , transform = None , radius = 0.0 ) [source] #
Renvoie si la zone délimitée par le chemin contient le point donné.
Le chemin est toujours considéré comme fermé ; c'est-à-dire que si le dernier code n'est pas CLOSEPOLY, un segment implicite reliant le dernier sommet au premier sommet est supposé.
- Paramètres :
- point (flottant, flottant)
Le point (x, y) à vérifier.
- transformer
matplotlib.transforms.Transform
, facultatif Sinon
None
, le point sera comparé àself
transformé par transform ; c'est-à-dire que pour une vérification correcte, transform doit transformer le chemin dans le système de coordonnées du point .- rayon flottant, par défaut : 0
Ajoutez une marge supplémentaire sur le chemin dans les coordonnées du point . La trajectoire est prolongée tangentiellement de rayon/2 ; c'est-à-dire que si vous dessiniez le chemin avec une largeur de ligne de rayon , tous les points de la ligne seraient toujours considérés comme contenus dans la zone. A l'inverse, les valeurs négatives réduisent la zone : les points sur la ligne imaginaire seront considérés en dehors de la zone.
- Retours :
- bourdonner
Remarques
L'algorithme actuel a certaines limites :
Le résultat est indéfini pour les points situés exactement à la frontière (c'est-à-dire au chemin décalé de radius/2 ).
Le résultat est indéfini s'il n'y a pas de zone fermée, c'est-à-dire que tous les sommets sont sur une ligne droite.
Si les lignes de délimitation commencent à se croiser en raison d'un changement de rayon , le résultat n'est pas garanti correct.
- contains_points ( points , transform = None , radius = 0.0 ) [source] #
Renvoie si la zone délimitée par le chemin contient les points donnés.
Le chemin est toujours considéré comme fermé ; c'est-à-dire que si le dernier code n'est pas CLOSEPOLY, un segment implicite reliant le dernier sommet au premier sommet est supposé.
- Paramètres :
- tableau de points (N, 2)
Les points à vérifier. Les colonnes contiennent des valeurs x et y.
- transformer
matplotlib.transforms.Transform
, facultatif Sinon
None
, les points seront comparés àself
transformés par transform ; c'est-à-dire que pour une vérification correcte, transform doit transformer le chemin dans le système de coordonnées de points .- rayon flottant, par défaut : 0
Ajouter une marge supplémentaire sur le chemin en coordonnées de points . La trajectoire est prolongée tangentiellement de rayon/2 ; c'est-à-dire que si vous dessiniez le chemin avec une largeur de ligne de rayon , tous les points de la ligne seraient toujours considérés comme contenus dans la zone. A l'inverse, les valeurs négatives réduisent la zone : les points sur la ligne imaginaire seront considérés en dehors de la zone.
- Retours :
- longueur-N tableau booléen
Remarques
L'algorithme actuel a certaines limites :
Le résultat est indéfini pour les points situés exactement à la frontière (c'est-à-dire au chemin décalé de radius/2 ).
Le résultat est indéfini s'il n'y a pas de zone fermée, c'est-à-dire que tous les sommets sont sur une ligne droite.
Si les lignes de délimitation commencent à se croiser en raison d'un changement de rayon , le résultat n'est pas garanti correct.
- copier ( ) [source] #
Renvoie une copie superficielle de
Path
, qui partagera les sommets et les codes avec la sourcePath
.
- deepcopy ( mémo = Aucun ) [source] #
Renvoie une copie complète du fichier
Path
. LePath
ne sera pas en lecture seule, même si la source l'Path
est.
- get_extents ( transform = None , ** kwargs ) [source] #
Obtenez la Bbox du chemin.
- Paramètres :
- transformer matplotlib.transforms.Transform, facultatif
Transformer pour appliquer au chemin avant de calculer les étendues, le cas échéant.
- **kwargs
Transmis à
iter_bezier
.
- Retours :
- matplotlib.transforms.Bbox
Les étendues du chemin Bbox([[xmin, ymin], [xmax, ymax]])
- hachures statiques ( motif de hachures , densité = 6 ) [source] #
Étant donné un spécificateur de hachures, hatchpattern , génère un Path qui peut être utilisé dans un motif de hachures répété. la densité est le nombre de lignes par unité de carré.
- interpolé ( étapes ) [source] #
Renvoie un nouveau chemin rééchantillonné à la longueur N x étapes.
Les codes autres que LINETO ne sont pas gérés correctement.
- intersects_bbox ( bbox , filled = True ) [source] #
Retourne si ce chemin croise un donné
Bbox
.Si rempli vaut True, cela renvoie également True si le chemin contient complètement le
Bbox
(c'est-à-dire que le chemin est traité comme rempli).La boîte englobante est toujours considérée comme remplie.
- intersects_path ( autre , rempli = Vrai ) [source] #
Retourne si ce chemin croise un autre chemin donné.
Si rempli vaut True, cela renvoie également True si un chemin englobe complètement l'autre (c'est-à-dire que les chemins sont traités comme remplis).
- iter_bezier ( ** kwargs ) [source] #
Itérer sur chaque courbe de Bézier (lignes incluses) dans un chemin.
- Paramètres :
- **kwargs
Transmis à
iter_segments
.
- Rendements :
- B matplotlib.bezier.BezierSegment
Les courbes de Bézier qui composent le chemin actuel. Notez en particulier que les points autonomes sont des courbes de Bézier d'ordre 0 et que les lignes sont des courbes de Bézier d'ordre 1 (avec deux points de contrôle).
- code Chemin.code_type
Le code décrivant le type de courbe renvoyé. Path.MOVETO, Path.LINETO, Path.CURVE3, Path.CURVE4 correspondent aux courbes de Bézier avec 1, 2, 3 et 4 points de contrôle (respectivement). Path.CLOSEPOLY est un Path.LINETO avec les points de contrôle correctement choisis en fonction des points de début/fin du trait actuel.
- iter_segments ( transform = None , remove_nans = True , clip = None , snap = False , stroke_width = 1.0 , simplifie = None , curves = True , sketch = None ) [source] #
Itérer sur tous les segments de courbe du chemin.
Chaque itération renvoie une paire , où est une séquence de 1 à 3 paires de coordonnées, et est un code.
(vertices, code)
vertices
code
Path
En outre, cette méthode peut fournir un certain nombre de nettoyages et de conversions standard du chemin.
- Paramètres :
- transformer Aucun ou
Transform
Si ce n'est pas None, la transformation affine donnée sera appliquée au chemin.
- remove_nans booléen , facultatif
S'il faut supprimer tous les NaN du chemin et les ignorer à l'aide des commandes MOVETO.
- clip Aucun ou (float, float, float, float), facultatif
Si ce n'est pas None, doit être un quadruplet (x1, y1, x2, y2) définissant un rectangle dans lequel découper le chemin.
- snap Aucun ou bool, facultatif
Si True, alignez tous les nœuds sur les pixels ; si False, ne les cassez pas. Si Aucun, capture si le chemin ne contient que des segments parallèles aux axes x ou y, et pas plus de 1024 d'entre eux.
- stroke_width flottant, facultatif
La largeur du trait dessiné (utilisé pour l'accrochage au chemin).
- simplifier Aucun ou booléen, facultatif
Indique s'il faut simplifier le chemin en supprimant les sommets qui n'affectent pas son apparence. Si aucun, utilisez l'
should_simplify
attribut. Voir aussircParams["path.simplify"]
(par défaut :True
) etrcParams["path.simplify_threshold"]
(par défaut :0.111111111111
).- courbes bool, facultatif
Si True, les segments de courbe seront renvoyés en tant que segments de courbe. Si False, toutes les courbes seront converties en segments de ligne.
- croquis Aucun ou séquence, facultatif
Si ce n'est pas Aucun, doit être un triplet de la forme (échelle, longueur, caractère aléatoire), représentant les paramètres de l'esquisse.
- transformer Aucun ou
- méthode de classe make_compound_path ( * args ) [ source] #
Créez un chemin composé à partir d'une liste d'
Path
objets. Supprime aveuglément tousPath.STOP
les points de contrôle.
- méthode de classe make_compound_path_from_polys ( XY ) [ source] #
Créez un objet chemin composé pour dessiner un nombre de polygones avec un nombre égal de côtés XY est un (numpolys x numsides x 2) tableau numpy de sommets. L'objet de retour est un
Path
.( Code source , png )
- propriété Simplifier_threshold #
La fraction de différence de pixel en dessous de laquelle les sommets seront simplifiés.
- to_polygons ( transform = None , width = 0 , height = 0 , closed_only = True ) [source] #
Convertissez ce chemin en une liste de polygones ou de polylignes. Chaque polygone/polyligne est un tableau Nx2 de sommets. En d'autres termes, chaque polygone n'a ni
MOVETO
instructions ni courbes. Ceci est utile pour l'affichage dans les backends qui ne prennent pas en charge les chemins composés ou les courbes de Bézier.Si la largeur et la hauteur sont toutes deux non nulles, les lignes seront simplifiées de sorte que les sommets en dehors de (0, 0), (largeur, hauteur) seront tronqués.
Si closed_only vaut
True
(par défaut), seuls les polygones fermés, avec le dernier point identique au premier point, seront renvoyés. Toutes les polylignes non fermées du chemin seront explicitement fermées. Si closed_only vautFalse
, tous les polygones non fermés du chemin seront renvoyés en tant que polygones non fermés, et les polygones fermés seront renvoyés explicitement fermés en définissant le dernier point sur le même que le premier point.
- transformé ( transformer ) [source] #
Renvoie une copie transformée du chemin.
Voir également
matplotlib.transforms.TransformedPath
Une classe de chemin spécialisée qui mettra en cache le résultat transformé et se mettra automatiquement à jour lorsque la transformation change.
- classmethod unit_circle ( ) [source] #
Renvoie la lecture seule
Path
du cercle unité.Dans la plupart des cas,
Path.circle()
ce sera ce que vous voulez.
- méthode de classe unit_circle_righthalf ( ) [ source] #
Renvoie a
Path
de la moitié droite d'un cercle unité.Voir
Path.circle
pour la référence sur l'approximation utilisée.
- méthode de classe unit_rectangle ( ) [ source] #
Renvoie une
Path
instance du rectangle unitaire de (0, 0) à (1, 1).
- classmethod unit_regular_asterisk ( numVertices ) [source] #
Renvoie a
Path
pour un astérisque régulier d'unité avec le numVertices donné et le rayon de 1,0, centré sur (0, 0).
- classmethod unit_regular_polygon ( numVertices ) [source] #
Renvoie une
Path
instance pour un polygone régulier unitaire avec les numVertices donnés tels que le cercle circonscrit a un rayon de 1,0, centré à (0, 0).
- classmethod unit_regular_star ( numVertices , innerCircle = 0.5 ) [source] #
Renvoie a
Path
pour une étoile régulière unitaire avec le nombre de sommets donné et un rayon de 1,0, centré sur (0, 0).
- coin méthode de classe ( thêta1 , thêta2 , n = Aucun ) [source] #
Renvoie a
Path
pour le coin du cercle unitaire des angles theta1 à theta2 (en degrés).theta2 est déballé pour produire le coin le plus court sur 360 degrés. Autrement dit, si theta2 > theta1 + 360, le coin sera de theta1 à theta2 - 360 et non un cercle complet plus un chevauchement supplémentaire.
Si n est fourni, il s'agit du nombre de segments de spline à créer. Si n n'est pas fourni, le nombre de segments de spline est déterminé en fonction du delta entre theta1 et theta2 .
Voir
Path.arc
pour la référence sur l'approximation utilisée.
- matplotlib.path. get_path_collection_extents ( master_transform , paths , transforms , offsets , offset_transform ) [source] #
Étant donné une séquence d' objets
Path
s,Transform
s et de décalages, tels que trouvés dans aPathCollection
, renvoie la boîte englobante qui les encapsule tous.- Paramètres :
Remarques
La façon dont paths , transforms et offsets sont combinés suit la même méthode que pour les collections : chacun est itéré indépendamment, donc si vous avez 3 paths, 2 transforms et 1 offset, leurs combinaisons sont les suivantes :
(A, A, A), (B, B, A), (C, A, A)