matplotlib.path#

Ein Modul zum Umgang mit den in Matplotlib verwendeten Polylinien.

Die primäre Klasse für die Handhabung von Polylinien in Matplotlib ist Path. Fast alle Vektorzeichnungen verwenden Paths irgendwo in der Zeichnungspipeline.

Während eine PathInstanz selbst nicht gezeichnet werden kann, können einige ArtistUnterklassen, wie z. B. PathPatchund PathCollection, zur bequemen Path Visualisierung verwendet werden.

Klasse matplotlib.path. Pfad ( vertices , codes = None , _interpolation_steps = 1 , closed = False , readonly = False ) [Quelle] #

Basen:object

Eine Reihe von möglicherweise getrennten, möglicherweise geschlossenen Linien- und Kurvensegmenten.

Der zugrunde liegende Speicher besteht aus zwei parallelen numpy-Arrays:

  • Vertices : ein Nx2 Float-Array von Vertices

  • codes : ein uint8-Array von Pfadcodes der Länge N oder None

Diese beiden Arrays haben in der ersten Dimension immer die gleiche Länge. Um beispielsweise eine kubische Kurve darzustellen, müssen Sie drei Scheitelpunkte und drei CURVE4Codes angeben.

Die Codearten sind:

  • STOP1 Scheitelpunkt (ignoriert)

    Eine Markierung für das Ende des gesamten Pfads (derzeit nicht erforderlich und ignoriert)

  • MOVETO1 Scheitel

    Nehmen Sie den Stift und bewegen Sie sich zum angegebenen Scheitelpunkt.

  • LINETO1 Scheitel

    Zeichnen Sie eine Linie von der aktuellen Position zum angegebenen Scheitelpunkt.

  • CURVE31 Kontrollpunkt, 1 Endpunkt

    Zeichnen Sie eine quadratische Bezier-Kurve von der aktuellen Position mit dem angegebenen Kontrollpunkt bis zum angegebenen Endpunkt.

  • CURVE42 Kontrollpunkte, 1 Endpunkt

    Zeichnen Sie eine kubische Bezier-Kurve von der aktuellen Position mit den angegebenen Kontrollpunkten bis zum angegebenen Endpunkt.

  • CLOSEPOLY1 Scheitelpunkt (ignoriert)

    Zeichnen Sie ein Liniensegment zum Startpunkt der aktuellen Polylinie.

Wenn codes None ist, wird es als MOVETOgefolgt von einer Reihe von interpretiert LINETO.

Benutzer von Path-Objekten sollten nicht direkt auf die Vertices- und Code-Arrays zugreifen. Stattdessen sollten sie iter_segmentsoder verwenden cleaned, um die Vertex/Code-Paare zu erhalten. Dies hilft insbesondere, den Fall von Codes , die None sind, konsequent zu behandeln.

Einige Verhaltensweisen von Path-Objekten können durch rcParams gesteuert werden. Sehen Sie sich die rcParams an, deren Schlüssel mit 'path.' beginnen.

Notiz

Die Vertices- und Code-Arrays sollten als unveränderlich behandelt werden – im Konstruktor gibt es eine Reihe von Optimierungen und Annahmen, die sich nicht ändern, wenn sich die Daten ändern.

Erstellen Sie einen neuen Pfad mit den angegebenen Scheitelpunkten und Codes.

Parameter :
Knoten (N, 2) reihenartig

Die Pfadvertices als Array, maskiertes Array oder Folge von Paaren. Gegebenenfalls maskierte Werte werden in NaNs konvertiert, die dann vom Agg PathIterator und anderen Verbrauchern von Pfaddaten wie iter_segments().

Codes Array-artig oder Keine, optional

Array der Länge N aus ganzen Zahlen, die die Codes des Pfads darstellen. Wenn nicht None, müssen Codes die gleiche Länge haben wie Scheitelpunkte. Wenn keine, werden Scheitelpunkte als eine Reihe von Liniensegmenten behandelt.

_interpolation_steps int, optional

Wird als Hinweis auf bestimmte Projektionen wie Polar verwendet, dass dieser Pfad unmittelbar vor dem Zeichnen linear interpoliert werden sollte. Dieses Attribut ist in erster Linie ein Implementierungsdetail und nicht für die öffentliche Verwendung vorgesehen.

geschlossen bool, optional

Wenn Codes None und Closed True ist, werden Scheitelpunkte als Liniensegmente eines geschlossenen Polygons behandelt. Beachten Sie, dass der letzte Scheitelpunkt dann ignoriert wird (da der entsprechende Code auf CLOSEPOLY gesetzt wird).

readonly bool, optional

Bewirkt, dass sich der Pfad unveränderlich verhält, und legt die Scheitelpunkte und Codes als schreibgeschützte Arrays fest.

CLOSEPOLY = 79 #
KURVE3 = 3 #
KURVE4 = 4 #
LINETO = 2 #
MOVETO = 1 #
NUM_VERTICES_FOR_CODE = {0: 1, 1: 1, 2: 1, 3: 2, 4: 3, 79: 1} #

Ein Wörterbuch, das Pfadcodes auf die Anzahl der Scheitelpunkte abbildet, die der Code erwartet.

STOP = 0 #
Klassenmethode arc ( theta1 , theta2 , n = None , is_wedge = False ) [Quelle] #

Geben Sie a Pathfür den Einheitskreisbogen von den Winkeln Theta1 bis Theta2 (in Grad) zurück.

Theta2 wird ausgepackt, um den kürzesten Bogen innerhalb von 360 Grad zu erzeugen. Das heißt, wenn Theta2 > Theta1 + 360 ist, verläuft der Bogen von Theta1 zu Theta2 – 360 und nicht zu einem vollständigen Kreis plus einer zusätzlichen Überlappung.

Wenn n angegeben wird, ist dies die Anzahl der zu erstellenden Spline-Segmente. Wenn n nicht angegeben wird, wird die Anzahl der Spline-Segmente basierend auf dem Delta zwischen theta1 und theta2 bestimmt .

classmethod circle ( center = (0.0, 0.0) , radius = 1.0 , readonly = False ) [Quelle] #

Gibt ein zurück Path, das einen Kreis mit gegebenem Radius und Mittelpunkt darstellt.

Parameter :
center (float, float), Standard: (0, 0)

Der Mittelpunkt des Kreises.

Radiusfloat , Standard: 1

Der Radius des Kreises.

readonly bool

Ob für den erstellten Pfad das Argument „schreibgeschützt“ festgelegt werden soll, wenn die Path-Instanz erstellt wird.

Anmerkungen

Der Kreis wird unter Verwendung von 8 kubischen Bezier-Kurven angenähert, wie in beschrieben

gereinigt ( transform = None , remove_nans = False , clip = None , * , vereinfachen = False , curves = False , stroke_width = 1.0 , snap = False , sketch = None ) [Quelle] #

Geben Sie einen neuen Pfad mit gemäß den Parametern bereinigten Scheitelpunkten und Codes zurück.

Siehe auch

Path.iter_segments

für Details zu den Schlüsselwortargumenten.

clip_to_bbox ( bbox , inside = True ) [Quelle] #

Schneiden Sie den Pfad auf den angegebenen Begrenzungsrahmen.

Der Pfad muss aus einem oder mehreren geschlossenen Polygonen bestehen. Dieser Algorithmus verhält sich für nicht geschlossene Pfade nicht korrekt.

Wenn innen ist True, an der Innenseite der Schachtel befestigen, andernfalls an der Außenseite der Schachtel.

code_type #

Pseudonym vonuint8

Eigenschaftscodes # _

Die Liste der Codes in Pathals 1D-Nummern-Array. Jeder Code ist einer von STOP, MOVETO, LINETO, CURVE3, CURVE4 oder CLOSEPOLY. Bei Codes, die mehr als einem Scheitelpunkt ( CURVE3und CURVE4) entsprechen, wird dieser Code wiederholt, sodass die Länge von verticesund codesimmer gleich ist.

contains_path ( path , transform = None ) [Quelle] #

Gibt zurück, ob dieser (geschlossene) Pfad den angegebenen Pfad vollständig enthält.

Wenn transform nicht ist None, wird der Pfad transformiert, bevor auf Containment geprüft wird.

contains_point ( point , transform = None , radius = 0.0 ) [Quelle] #

Gibt zurück, ob der vom Pfad eingeschlossene Bereich den angegebenen Punkt enthält.

Der Pfad wird immer als geschlossen behandelt; dh wenn der letzte Code nicht CLOSEPOLY ist, wird ein implizites Segment angenommen, das den letzten Eckpunkt mit dem ersten Eckpunkt verbindet.

Parameter :
Punkt (float, float)

Der zu überprüfende Punkt (x, y).

transformieren matplotlib.transforms.Transform, optional

Wenn nicht None, wird Punkt mit selftransformiert durch transform verglichen ; dh für eine korrekte Überprüfung sollte transform den Pfad in das Koordinatensystem von Punkt transformieren .

Radiusfloat , Standard: 0

Fügen Sie dem Pfad in den Koordinaten des Punktes einen zusätzlichen Rand hinzu . Die Bahn wird tangential um den Radius/2 verlängert ; dh wenn Sie den Pfad mit einer Linienbreite von radius zeichnen würden , würden alle Punkte auf der Linie immer noch als in der Fläche enthalten betrachtet. Umgekehrt verkleinern negative Werte die Fläche: Punkte auf der gedachten Linie werden als außerhalb der Fläche betrachtet.

Rückgaben :
bool

Anmerkungen

Der aktuelle Algorithmus hat einige Einschränkungen:

  • Für Punkte genau am Rand (dh an der um Radius/2 verschobenen Bahn ) ist das Ergebnis undefiniert.

  • Das Ergebnis ist undefiniert, wenn es keine umschlossene Fläche gibt, dh alle Eckpunkte auf einer Geraden liegen.

  • Wenn sich Begrenzungslinien aufgrund einer Radiusverschiebung zu kreuzen beginnen , ist das Ergebnis nicht garantiert korrekt.

contains_points ( points , transform = None , radius = 0.0 ) [Quelle] #

Gibt zurück, ob der vom Pfad eingeschlossene Bereich die angegebenen Punkte enthält.

Der Pfad wird immer als geschlossen behandelt; dh wenn der letzte Code nicht CLOSEPOLY ist, wird ein implizites Segment angenommen, das den letzten Eckpunkt mit dem ersten Eckpunkt verbindet.

Parameter :
Punkte (N, 2) Array

Die zu prüfenden Punkte. Spalten enthalten x- und y-Werte.

transformieren matplotlib.transforms.Transform, optional

Wenn nicht None, werden die Punkteself mit transformiert verglichen ; dh für eine korrekte Überprüfung sollte transform den Pfad in das Koordinatensystem der Punkte transformieren .

Radiusfloat , Standard: 0

Fügen Sie dem Pfad einen zusätzlichen Rand in Punktkoordinaten hinzu . Die Bahn wird tangential um den Radius/2 verlängert ; dh wenn Sie den Pfad mit einer Linienbreite von radius zeichnen würden , würden alle Punkte auf der Linie immer noch als in der Fläche enthalten betrachtet. Umgekehrt verkleinern negative Werte die Fläche: Punkte auf der gedachten Linie werden als außerhalb der Fläche betrachtet.

Rückgaben :
length-N bool Array

Anmerkungen

Der aktuelle Algorithmus hat einige Einschränkungen:

  • Für Punkte genau am Rand (dh an der um Radius/2 verschobenen Bahn ) ist das Ergebnis undefiniert.

  • Das Ergebnis ist undefiniert, wenn es keine umschlossene Fläche gibt, dh alle Eckpunkte auf einer Geraden liegen.

  • Wenn sich Begrenzungslinien aufgrund einer Radiusverschiebung zu kreuzen beginnen , ist das Ergebnis nicht garantiert korrekt.

kopieren ( ) [Quelle] #

Geben Sie eine flache Kopie von zurück Path, die die Scheitelpunkte und Codes mit der Quelle teilt Path.

deepcopy ( memo = None ) [Quelle] #

Geben Sie eine Deepcopy der Path. Der Pathwird nicht schreibgeschützt, auch wenn die Quelle Pathes ist.

get_extents ( transform = None , ** kwargs ) [Quelle] #

Holen Sie sich Bbox des Pfades.

Parameter :
transform matplotlib.transforms.Transform, optional

Transformieren, um auf den Pfad anzuwenden, bevor Extents berechnet werden, falls vorhanden.

**Kwarg

Weitergeleitet an iter_bezier.

Rückgaben :
matplotlib.transforms.Bbox

Die Ausdehnung des Pfades Bbox([[xmin, ymin], [xmax, ymax]])

Statische Schraffur ( Schraffurmuster , Dichte = 6 ) [Quelle] #

Bei einem gegebenen Schraffurbezeichner erzeugt hatchpattern einen Pfad, der in einem wiederholten Schraffurmuster verwendet werden kann. Dichte ist die Anzahl der Linien pro Quadrateinheit.

interpoliert ( Schritte ) [Quelle] #

Geben Sie einen neuen Pfad zurück, der auf eine Länge von N x Schritten neu abgetastet wurde.

Andere Codes als LINETO werden nicht korrekt verarbeitet.

intersects_bbox ( bbox , gefüllt = True ) [Quelle] #

Gibt zurück, ob dieser Pfad eine gegebene schneidet Bbox.

Wenn gefüllt True ist, dann gibt dies auch True zurück, wenn der Pfad das vollständig umschließt Bbox(dh der Pfad wird als gefüllt behandelt).

Der Begrenzungsrahmen gilt immer als gefüllt.

intersects_path ( andere , gefüllt = True ) [Quelle] #

Gibt zurück, ob dieser Pfad einen anderen gegebenen Pfad schneidet.

Wenn gefüllt True ist, dann gibt dies auch True zurück, wenn ein Pfad den anderen vollständig umschließt (dh die Pfade werden als gefüllt behandelt).

iter_bezier ( ** kwargs ) [Quelle] #

Iterieren Sie über jede Bezierkurve (einschließlich Linien) in einem Pfad.

Parameter :
**Kwarg

Weitergeleitet an iter_segments.

Erträge :
B matplotlib.bezier.BezierSegment

Die Bezierkurven, die den aktuellen Pfad bilden. Beachten Sie insbesondere, dass freistehende Punkte Bezierkurven der Ordnung 0 und Linien Bezierkurven der Ordnung 1 (mit zwei Kontrollpunkten) sind.

code Pfad.code_typ

Der Code, der beschreibt, welche Art von Kurve zurückgegeben wird. Path.MOVETO, Path.LINETO, Path.CURVE3, Path.CURVE4 entsprechen Bezierkurven mit 1, 2, 3 bzw. 4 Kontrollpunkten. Path.CLOSEPOLY ist ein Path.LINETO mit korrekt ausgewählten Kontrollpunkten basierend auf den Start-/Endpunkten des aktuellen Strichs.

iter_segments ( transform = None , remove_nans = True , clip = None , snap = False , stroke_width = 1.0 , vereinfachen = None , curves = True , sketch = None ) [Quelle] #

Über alle Kurvensegmente im Pfad iterieren.

Jede Iteration gibt ein Paar zurück , wobei eine Folge von 1–3 Koordinatenpaaren und ein Code ist.(vertices, code)verticescodePath

Darüber hinaus kann diese Methode eine Reihe von Standardbereinigungen und -konvertierungen für den Pfad bereitstellen.

Parameter :
transformieren Keine oderTransform

Wenn nicht None, wird die angegebene affine Transformation auf den Pfad angewendet.

remove_nans bool, optional

Ob alle NaNs aus dem Pfad entfernt und mit MOVETO-Befehlen übersprungen werden sollen.

clip Keine oder (float, float, float, float), optional

Wenn nicht None, muss ein Vierer-Tupel (x1, y1, x2, y2) sein, das ein Rechteck definiert, in dem der Pfad abgeschnitten werden soll.

snap Keine oder bool, optional

Wenn True, alle Knoten an Pixeln ausrichten; wenn False, schnappen Sie sie nicht. Bei „Keine“ wird gefangen, wenn der Pfad nur Segmente enthält, die parallel zur x- oder y-Achse verlaufen, und nicht mehr als 1024 davon.

Stroke_width Float, optional

Die Breite des gezeichneten Strichs (wird zum Einrasten von Pfaden verwendet).

vereinfachen None oder bool, optional

Ob der Pfad vereinfacht werden soll, indem Scheitelpunkte entfernt werden, die sich nicht auf sein Erscheinungsbild auswirken. Wenn keine, verwenden Sie das should_simplifyAttribut. Siehe auch rcParams["path.simplify"](Standard: True) und rcParams["path.simplify_threshold"](Standard: 0.111111111111).

Kurven bool, optional

Bei True werden Kurvensegmente als Kurvensegmente zurückgegeben. Bei False werden alle Kurven in Liniensegmente umgewandelt.

Skizze Keine oder Sequenz, optional

Wenn nicht None, muss es sich um ein 3-Tupel der Form (Maßstab, Länge, Zufälligkeit) handeln, das die Skizzenparameter darstellt.

Klassenmethode make_compound_path ( * args ) [Quelle] #

Erstellen Sie einen zusammengesetzten Pfad aus einer Liste von PathObjekten. Entfernt blind alle Path.STOPKontrollpunkte.

Klassenmethode make_compound_path_from_polys ( XY ) [Quelle] #

Erstellen Sie ein zusammengesetztes Pfadobjekt, um eine Anzahl von Polygonen mit gleicher Anzahl von Seiten zu zeichnen. XY ist ein (numpolys x numsides x 2) numpy Array von Scheitelpunkten. Rückgabeobjekt ist eine Path.

( Quellcode , png )

../_images/histogram_path_00_00.png
Eigenschaft schreibgeschützt #

Truewenn die Pathschreibgeschützt ist.

Eigenschaft should_simplify #

Truewenn das Vertices-Array vereinfacht werden soll.

Eigenschaft vereinfachen_Schwelle #

Der Bruchteil eines Pixelunterschieds, unterhalb dessen Scheitelpunkte vereinfacht werden.

to_polygons ( transform = None , width = 0 , height = 0 , closed_only = True ) [Quelle] #

Wandeln Sie diesen Pfad in eine Liste von Polygonen oder Polylinien um. Jedes Polygon/jede Polylinie ist ein Nx2-Array von Scheitelpunkten. Mit anderen Worten, jedes Polygon hat keine MOVETOAnweisungen oder Kurven. Dies ist nützlich für die Anzeige in Backends, die zusammengesetzte Pfade oder Bezier-Kurven nicht unterstützen.

Wenn Breite und Höhe beide nicht Null sind, werden die Linien vereinfacht, sodass Scheitelpunkte außerhalb von (0, 0), (Breite, Höhe) abgeschnitten werden.

Wenn closed_onlyTrue (Standard) ist, werden nur geschlossene Polygone zurückgegeben, bei denen der letzte Punkt mit dem ersten Punkt identisch ist . Alle nicht geschlossenen Polylinien im Pfad werden explizit geschlossen. Wenn closed_only ist False, werden alle nicht geschlossenen Polygone im Pfad als nicht geschlossene Polygone zurückgegeben, und die geschlossenen Polygone werden explizit geschlossen zurückgegeben, indem der letzte Punkt auf den gleichen Wert wie der erste Punkt gesetzt wird.

transformiert ( transformieren ) [Quelle] #

Gibt eine transformierte Kopie des Pfads zurück.

Siehe auch

matplotlib.transforms.TransformedPath

Eine spezialisierte Pfadklasse, die das transformierte Ergebnis zwischenspeichert und automatisch aktualisiert, wenn sich die Transformation ändert.

Klassenmethode unit_circle ( ) [Quelle] #

Gibt den schreibgeschützten Wert Pathdes Einheitskreises zurück.

In den meisten Fällen Path.circle()wird es das sein, was Sie wollen.

Klassenmethode unit_circle_righthalf ( ) [Quelle] #

Geben Sie a Pathder rechten Hälfte eines Einheitskreises zurück.

Siehe Path.circlefür die Referenz zur verwendeten Näherung.

Klassenmethode unit_rectangle ( ) [Quelle] #

Gibt eine PathInstanz des Einheitsrechtecks ​​von (0, 0) bis (1, 1) zurück.

Klassenmethode unit_regular_asterisk ( numVertices ) [Quelle] #

Gibt ein Pathfür eine Einheit reguläres Sternchen mit der gegebenen numVertices und dem Radius von 1,0 zurück, zentriert bei (0, 0).

Klassenmethode unit_regular_polygon ( numVertices ) [Quelle] #

Gibt eine PathInstanz für ein regelmäßiges Einheitspolygon mit den angegebenen numVertices zurück , sodass der umschreibende Kreis den Radius 1,0 hat und bei (0, 0) zentriert ist.

Klassenmethode unit_regular_star ( numVertices , innerCircle = 0.5 ) [Quelle] #

Gibt a Pathfür einen regulären Einheitsstern mit der gegebenen numVertices und dem Radius von 1,0 zurück, zentriert bei (0, 0).

Eigenschaft Knoten #

Die Liste der Scheitelpunkte in Pathals ein Nx2-numpy-Array.

Klassenmethodenkeil ( theta1 , theta2 , n = None ) [Quelle ] #

Geben Sie a Pathfür den Einheitskreiskeil von den Winkeln Theta1 bis Theta2 (in Grad) zurück.

Theta2 wird ausgepackt, um den kürzesten Keil innerhalb von 360 Grad zu erzeugen. Das heißt, wenn Theta2 > Theta1 + 360 ist, verläuft der Keil von Theta1 bis Theta2 – 360 und ist kein vollständiger Kreis plus einige zusätzliche Überlappungen.

Wenn n angegeben wird, ist dies die Anzahl der zu erstellenden Spline-Segmente. Wenn n nicht angegeben wird, wird die Anzahl der Spline-Segmente basierend auf dem Delta zwischen theta1 und theta2 bestimmt .

Siehe Path.arcfür die Referenz zur verwendeten Näherung.

matplotlib.path. get_path_collection_extents ( master_transform , paths , transforms , offsets , offset_transform ) [Quelle] #

Bei einer gegebenen Folge von Paths, Transforms-Objekten und Offsets, wie sie in a zu finden PathCollectionsind, wird der Begrenzungsrahmen zurückgegeben, der sie alle einschließt.

Parameter :
master_transformTransform

Globale Transformation auf alle Pfade angewendet.

Pfadliste vonPath
transformiert Liste vonAffine2D
Offsets (N, 2) Array-artig
offset_transformationAffine2D

Auf die Offsets angewendete Transformation vor dem Versetzen des Pfads.

Anmerkungen

Die Art und Weise, wie Pfade , Transformationen und Offsets kombiniert werden, folgt der gleichen Methode wie für Sammlungen: Jede wird unabhängig iteriert. Wenn Sie also 3 Pfade, 2 Transformationen und 1 Offset haben, sind ihre Kombinationen wie folgt:

(A, A, A), (B, B, A), (C, A, A)