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 Paths quelque part dans le pipeline de dessin.
Bien qu'une Pathinstance elle-même ne puisse pas être dessinée, certaines Artistsous-classes, telles que PathPatchet 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 :
objectUne 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
CURVE4codes.Les types de codes sont :
STOP1 sommet (ignoré)Un marqueur pour la fin du chemin entier (actuellement non requis et ignoré)
MOVETO1 sommetPrenez le stylo et déplacez-vous vers le sommet donné.
LINETO1 sommetTracez une ligne de la position actuelle au sommet donné.
CURVE31 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é.
CURVE42 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é.
CLOSEPOLY1 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
MOVETOsuivi 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_segmentsoucleanedpour 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
Pathpour 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
Pathrepré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_segmentspour 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
Pathsous forme de tableau numpy 1D. Chaque code est l'un desSTOP,MOVETO,LINETO,CURVE3ou . 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.CURVE4CLOSEPOLYCURVE3CURVE4verticescodes
- 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é àselftransformé 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 àselftransformé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. LePathne sera pas en lecture seule, même si la source l'Pathest.
- 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)verticescodePathEn 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_simplifyattribut. 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'
Pathobjets. Supprime aveuglément tousPath.STOPles 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
MOVETOinstructions 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.TransformedPathUne 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
Pathdu 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
Pathde la moitié droite d'un cercle unité.Voir
Path.circlepour la référence sur l'approximation utilisée.
- méthode de classe unit_rectangle ( ) [ source] #
Renvoie une
Pathinstance du rectangle unitaire de (0, 0) à (1, 1).
- classmethod unit_regular_asterisk ( numVertices ) [source] #
Renvoie a
Pathpour 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
Pathinstance 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
Pathpour 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
Pathpour 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.arcpour 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
Paths,Transforms 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)