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 :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 CURVE4codes.

Les types de codes sont :

  • STOP1 sommet (ignoré)

    Un marqueur pour la fin du chemin entier (actuellement non requis et ignoré)

  • MOVETO1 sommet

    Prenez le stylo et déplacez-vous vers le sommet donné.

  • LINETO1 sommet

    Tracez une ligne de la position actuelle au sommet donné.

  • CURVE31 point de contrôle, 1 point final

    Dessinez 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 final

    Dessinez 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 de LINETO.

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_segmentsou cleanedpour 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_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 deuint8

codes de propriété #

La liste des codes dans le Pathsous forme de tableau numpy 1D. Chaque code est l'un des STOP, 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 source Path.

deepcopy ( mémo = Aucun ) [source] #

Renvoie une copie complète du fichier Path. Le Pathne 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)verticescodePath

En outre, cette méthode peut fournir un certain nombre de nettoyages et de conversions standard du chemin.

Paramètres :
transformer Aucun ouTransform

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 aussi rcParams["path.simplify"](par défaut : True) et rcParams["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.

méthode de classe make_compound_path ( * args ) [ source] #

Créez un chemin composé à partir d'une liste d' Pathobjets. Supprime aveuglément tous Path.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 )

../_images/chemin_histogramme_00_00.png
propriété en lecture seule #

Truesi Pathest en lecture seule.

propriété should_simplify #

Truesi le tableau des sommets doit être simplifié.

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 vaut False, 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 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).

sommets de propriété #

La liste des sommets dans le Pathsous la forme d'un tableau numpy Nx2.

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 a PathCollection, renvoie la boîte englobante qui les encapsule tous.

Paramètres :
master_transformTransform

Transformation globale appliquée à tous les chemins.

liste des chemins dePath
transforme la liste deAffine2D
décalages (N, 2)
offset_transformAffine2D

Transformer appliqué aux décalages avant de décaler le chemin.

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)