überraschenderweise fand ich keine einfache Beschreibung, wie man einen Kreis mit matplotlib.pyplot (bitte kein Pylab) als Eingabezentrum (x, y) und Radius r zeichnet. Ich habe einige Varianten davon ausprobiert:
import matplotlib.pyplot as plt
circle=plt.Circle((0,0),2)
# here must be something like circle.plot() or not?
plt.show()
... aber es hat immer noch nicht funktioniert.
python
matplotlib
Max Li
quelle
quelle
plt.Circle(..)
leitet anmatplotlib.patches.Circle()
. Eine Lösung ohne Pyplot wäre alsocircle = matplotlib.patches.Circle(..); axes.add_artist(circle)
.Antworten:
Sie müssen es einer Achse hinzufügen. A
Circle
ist eine Unterklasse von aArtist
und aaxes
hat eineadd_artist
Methode.Hier ist ein Beispiel dafür:
Daraus ergibt sich folgende Abbildung:
Der erste Kreis befindet sich am Ursprung, ist jedoch standardmäßig
clip_on
soTrue
, dass der Kreis immer dann abgeschnitten wird, wenn er sich über den Kreis hinaus erstrecktaxes
. Der dritte (grüne) Kreis zeigt, was passiert, wenn Sie das nicht abschneidenArtist
. Es erstreckt sich über die Achsen hinaus (aber nicht über die Figur hinaus, dh die Figurengröße wird nicht automatisch angepasst, um alle Ihre Künstler zu zeichnen).Die Einheiten für x, y und Radius entsprechen standardmäßig Dateneinheiten. In diesem Fall habe ich nichts auf meinen Achsen gezeichnet (
fig.gca()
gibt die aktuellen Achsen zurück), und da die Grenzwerte nie festgelegt wurden, wird standardmäßig ein x- und y-Bereich von 0 bis 1 verwendet.Hier ist eine Fortsetzung des Beispiels, das zeigt, wie wichtig Einheiten sind:
was in ... endet:
Sie können sehen, wie ich die Füllung des 2. Kreises auf setze
False
, was nützlich ist, um wichtige Ergebnisse zu umkreisen (wie mein gelber Datenpunkt).quelle
matplotlib.pyplot.Circle == matplotlib.patches.Circle
ausgewertetTrue
, also sind sie wahrscheinlich Aliase.Eine schnell komprimierte Version der akzeptierten Antwort, um schnell einen Kreis in ein vorhandenes Diagramm einzufügen. Beziehen Sie sich auf die akzeptierte Antwort und andere Antworten, um die Details zu verstehen.
Apropos:
gcf()
bedeutet Aktuelle Zahl abrufengca()
bedeutet Aktuelle Achse abrufenquelle
dir(fig)
zeigt mir über 30 'get'-Methoden, hat abergca
keinenget_current_axis
Alias. Diese Art von Fyi-Antworten ist wunderbar.plt.gca()
anstattplt.gcf().gca()
Wenn Sie eine Reihe von Kreisen zeichnen möchten, möchten Sie möglicherweise diesen Beitrag oder diesen Kern (etwas neuer) sehen. Der Beitrag bot eine Funktion namens
circles
.Die Funktion
circles
funktioniert wiescatter
, aber die Größe der gezeichneten Kreise ist in Dateneinheit angegeben.Hier ist ein Beispiel:
quelle
transform=ax.transAxes
dasmplleaflet
? Wenn ja, können Sie bitte ein Beispiel nennen?matplotlib
, sollte es kompatibel sein,mplleaflet
obwohl ich es nie ausprobiert habe.Oder, wenn Sie es vorziehen, schauen Sie sich die
path
s an, http://matplotlib.sourceforge.net/users/path_tutorial.htmlquelle
Wenn Sie möchten, dass der "Kreis" unabhängig von den Datenkoordinaten ein visuelles Seitenverhältnis von 1 beibehält, können Sie die Scatter () -Methode verwenden. http://matplotlib.org/1.3.1/api/pyplot_api.html#matplotlib.pyplot.scatter
quelle
Erweiterung der akzeptierten Antwort für einen allgemeinen Anwendungsfall. Bestimmtes:
Zeigen Sie die Kreise in einem natürlichen Seitenverhältnis an.
Erweitern Sie die Achsengrenzen automatisch um die neu gezeichneten Kreise.
In sich geschlossenes Beispiel:
Beachten Sie den Unterschied zwischen
ax.add_patch(..)
undax.add_artist(..)
: von beiden: Nur bei ersteren werden Autoscaling-Maschinen den Kreis berücksichtigen (Referenz: Diskussion ). Nach dem Ausführen des obigen Codes erhalten wir also:Siehe auch:
set_aspect(..)
Dokumentation .quelle
fig, ax = plt.subplots()
sonst erhalten Sie zwei Fenster (eines ist leer).Ich sehe Diagramme mit der Verwendung von (.circle), aber basierend auf dem, was Sie vielleicht tun möchten, können Sie dies auch ausprobieren:
quelle
Hallo, ich habe einen Code zum Zeichnen eines Kreises geschrieben. Es hilft beim Zeichnen aller Arten von Kreisen. Das Bild zeigt den Kreis mit Radius 1 und Mittelpunkt bei 0,0 Der Mittelpunkt und der Radius können beliebig bearbeitet werden.
Viel Glück
quelle
Ähnlich wie beim Streudiagramm können Sie auch ein normales Diagramm mit Kreislinienstil verwenden. Mit den
markersize
Parametern können Sie den Radius eines Kreises einstellen:quelle