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:
objectEine 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 ScheitelNehmen Sie den Stift und bewegen Sie sich zum angegebenen Scheitelpunkt.
LINETO1 ScheitelZeichnen Sie eine Linie von der aktuellen Position zum angegebenen Scheitelpunkt.
CURVE31 Kontrollpunkt, 1 EndpunktZeichnen Sie eine quadratische Bezier-Kurve von der aktuellen Position mit dem angegebenen Kontrollpunkt bis zum angegebenen Endpunkt.
CURVE42 Kontrollpunkte, 1 EndpunktZeichnen 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 interpretiertLINETO.Benutzer von Path-Objekten sollten nicht direkt auf die Vertices- und Code-Arrays zugreifen. Stattdessen sollten sie
iter_segmentsoder verwendencleaned, 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 .
Masionobe, L. 2003. Zeichnen eines Ellipsenbogens mit Polylinien, quadratischen oder kubischen Bezier-Kurven .
- 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_segmentsfü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 von
uint8
- Eigenschaftscodes # _
Die Liste der Codes in
Pathals 1D-Nummern-Array. Jeder Code ist einer vonSTOP,MOVETO,LINETO,CURVE3,CURVE4oderCLOSEPOLY. Bei Codes, die mehr als einem Scheitelpunkt (CURVE3undCURVE4) entsprechen, wird dieser Code wiederholt, sodass die Länge vonverticesundcodesimmer 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 mitselftransformiert 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 Punkteselfmit 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 teiltPath.
- deepcopy ( memo = None ) [Quelle] #
Geben Sie eine Deepcopy der
Path. DerPathwird nicht schreibgeschützt, auch wenn die QuellePathes 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)verticescodePathDarüber hinaus kann diese Methode eine Reihe von Standardbereinigungen und -konvertierungen für den Pfad bereitstellen.
- Parameter :
- transformieren Keine oder
Transform 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 auchrcParams["path.simplify"](Standard:True) undrcParams["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.
- transformieren Keine oder
- Klassenmethode make_compound_path ( * args ) [Quelle] #
Erstellen Sie einen zusammengesetzten Pfad aus einer Liste von
PathObjekten. Entfernt blind allePath.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.
- 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_only
True(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 istFalse, 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.TransformedPathEine 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).
- 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 findenPathCollectionsind, wird der Begrenzungsrahmen zurückgegeben, der sie alle einschließt.- Parameter :
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)