2017-07-21 3 views
2

Ich möchte ein Streudiagramm mit keine Facefarben aber mit verschiedenen Edgecolors plotten. Mit anderen Worten, bunte Kreise.Wie erstellt man ein Streudiagramm mit unterschiedlicher Kantenfarbe in Matplotlib?

Ich dachte, ich könnte leicht Lösung in Matplotlib Galerie finden, aber überraschend konnte ich nicht. Der Parameter "edgecolors" akzeptiert Array nicht als Werte. Und der Manipulations-Parameter 'c' hilft nicht bei Edgecolors, sondern bei Facelicons.

Hier ist ein Link, der ich dachte, die Lösung wäre: https://matplotlib.org/api/_as_gen/matplotlib.axes.Axes.scatter.html enter image description here

Die Demobild bunte edgecolors am Ende der Seite zu haben scheint! Dann lade ich das Skript herunter und starte es: enter image description here

Die Kante ist immer noch schwarz.

Ich mache jetzt meine Handlung auf andere Weise. (Da dies keine große Sache ist. Das ist nur eine Frage von Interesse.) Ich frage mich nur, wie das Demo die bunten Kanten bekommen hat.

+0

ich das Beispielskript lief und bekam das gleiche Ergebnis wie die Dokumentation produzieren, ich bin mit matplotlib 2.0.0 und Python 3.5.1, welche Versionen sind Sie? –

+0

Der einfachste Weg wäre tatsächlich, matplotlib auf Version 2.0 zu aktualisieren, wo die Scatter-Kantenfarbe automatisch die Farbe verwendet, die durch den Parameter 'c' festgelegt wurde. – ImportanceOfBeingErnest

Antwort

0

Wie andere gesagt haben, dass das Demoskript die bunten Kanten bekommen hat, legt Matplotlib 2.0 automatisch die Kantenfarbe der Punkte im Streudiagramm auf das angegebene Farbargument fest.

Wenn aber wollen Sie die Ergebnisse des Demo-Skript neu erstellen, ohne zu aktualisieren 2.0 zu MPL (obwohl ich es empfehlen) Sie brauchen nur einen zusätzlichen Schlagwort Parameter in die Streu Zeile hinzufügen als

plt.scatter(x, y, s=area, c=colors, alpha=0.5, edgecolors=colors) 
folgten

Und der Vollständigkeit halber können Sie die bunte Kreisidee, die Sie ursprünglich hatten, durch Vortäuschen implementieren. Sie müssen nur die interne Farbe auf Weiß ändern, das heißt

plt.scatter(x, y, s=area, c='w', alpha=0.5, edgecolors=colors) 

Zusätzlich Sie keinen einzigen Schwimmer können die Farbe für edgecolors definieren, wie sie in der Demo-Skript für die ‚c‘ Argument tun so Sie müssen entweder ein Array der Länge N liefern, die alle angegebenen Farben sind, z [ 'R', 'g', 'b'], oder die Definition der Farben mit

colors = np.random.random((N, p)) 

ersetzen, wo p entweder 3 oder 4 je nachdem, ob Sie RGB oder RGBA Farben in der Handlung wollen. Dies sollte so etwas wie die folgende Handlung

Output from scatter_demo.py with no face colour and colourful edges

Verwandte Themen