Wie kann in Python mit Matplotlib ein Streudiagramm mit leeren Kreisen gezeichnet werden? Ziel ist es, leere Kreise um einige der bereits gezeichneten scatter()
Farbscheiben zu zeichnen, um sie hervorzuheben, idealerweise ohne die farbigen Kreise neu zeichnen zu müssen.
Ich versuchte facecolors=None
es ohne Erfolg.
python
matplotlib
geometry
scatter-plot
scatter
Eric O Lebigot
quelle
quelle
Antworten:
Aus der Dokumentation zur Streuung:
Versuche Folgendes:
Hinweis: Weitere Arten von Plots finden Sie in diesem Beitrag zur Verwendung von
markeredgecolor
undmarkerfacecolor
.quelle
facecolors=None
nicht funktioniert, was mich stolperte.markerfacecolor='none'
ist es jetzt.markerfacecolor='none'
Versuch sehen, hinzuzufügenmarkeredgewidth=1.0
%matplotlib inline
undimport matplotlib.pyplot as plt
anschließend Seaborn als Plot-Standard festgelegt wurdeimport seaborn as sns; sns.set()
Würden diese funktionieren?
oder mit plot ()
quelle
plot
anstelle vonscatter
scatter
, müssen Sie angeben ,edgecolors
wieedgecolors='r'
. Ansonsten verschwinden die Kreise. Siehe hierHier ist eine andere Möglichkeit: Dies fügt den aktuellen Achsen, Plots oder Bildern oder was auch immer einen Kreis hinzu:
(Die Kreise im Bild werden weil zu Ellipsen gequetscht, weil
imshow aspect="auto"
).quelle
In matplotlib 2.0 gibt es einen Parameter namens,
fillstyle
der eine bessere Kontrolle über das Füllen von Markern ermöglicht. In meinem Fall habe ich es mit Fehlerbalken verwendet, aber es funktioniert für Marker im Allgemeinen http://matplotlib.org/api/_as_gen/matplotlib.axes.Axes.errorbar.htmlfillstyle
akzeptiert die folgenden Werte: ['full' | 'left' | 'richtig' | 'bottom' | 'Nach oben' | 'keiner']Bei der Verwendung sind zwei wichtige Dinge zu beachten
fillstyle
:1) Wenn mfc auf einen beliebigen Wert gesetzt ist, hat dies Priorität. Wenn Sie also den Füllstil auf 'none' setzen, wird er nicht wirksam. Vermeiden Sie daher die Verwendung von mfc in Verbindung mit Fillstyle
2) Möglicherweise möchten Sie die Kantenbreite des Markers steuern (mit
markeredgewidth
odermew
), da die Marker, wenn der Marker relativ klein und die Kantenbreite dick ist, wie gefüllt aussehen, obwohl dies nicht der Fall ist.Es folgt ein Beispiel mit Fehlerbalken:
quelle
Basierend auf dem Beispiel von Gary Kerr und wie hier vorgeschlagen , kann man leere Kreise erstellen, die sich auf bestimmte Werte mit folgendem Code beziehen:
quelle
.scatter()
nicht funktioniert hat. Für den Kontext habe ich auch eine Farbkarte (c=z, cmap='jet'
) angewendet .Ich gehe also davon aus, dass Sie einige Punkte hervorheben möchten, die bestimmten Kriterien entsprechen. Mit dem Befehl von Prelude können Sie ein zweites Streudiagramm der hervorgehobenen Punkte mit einem leeren Kreis und einem ersten Aufruf erstellen, um alle Punkte zu zeichnen. Stellen Sie sicher, dass der Parameter s klein genug ist, damit die größeren leeren Kreise die kleineren gefüllten einschließen können.
Die andere Option besteht darin, keine Streuung zu verwenden und die Patches mit dem Befehl circle / ellipse einzeln zu zeichnen. Diese befinden sich in matplotlib.patches. Hier finden Sie einen Beispielcode zum Zeichnen von Kreisrechtecken usw.
quelle