Angenommen, ich habe drei Datensätze:
X = [1,2,3,4]
Y1 = [4,8,12,16]
Y2 = [1,4,9,16]
Ich kann diese Handlung streuen:
from matplotlib import pyplot as plt
plt.scatter(X,Y1,color='red')
plt.scatter(X,Y2,color='blue')
plt.show()
Wie kann ich das mit 10 Sätzen machen?
Ich habe danach gesucht und konnte einen Hinweis auf das finden, was ich frage.
Edit: (hoffentlich) meine Frage klären
Wenn ich mehrmals Streuung aufrufe, kann ich nur für jede Streuung dieselbe Farbe einstellen. Ich weiß auch, dass ich ein Farbarray manuell einstellen kann, aber ich bin mir sicher, dass es einen besseren Weg gibt, dies zu tun. Meine Frage lautet dann: "Wie kann ich meine verschiedenen Datensätze mit jeweils unterschiedlichen Farben automatisch streuen und zeichnen?
Wenn das hilft, kann ich jedem Datensatz leicht eine eindeutige Nummer zuweisen.
python
matplotlib
scatter-plot
Yotam
quelle
quelle
Antworten:
Ich weiß nicht, was Sie unter "manuell" verstehen. Sie können eine Farbkarte auswählen und ganz einfach ein Farbarray erstellen:
Oder Sie können Ihren eigenen Farbzyklus erstellen,
itertools.cycle
indem Sie die Farben verwenden und angeben, über die Sie eine Schleife ausführen möchtennext
, um die gewünschte Farbe zu erhalten. Zum Beispiel mit 3 Farben:Kommen Sie und denken Sie darüber nach, vielleicht ist es sauberer, es nicht
zip
mit dem ersten zu verwenden:quelle
plt.legend(['c{}'.format(i) for i in range(len(ys))], loc=2, bbox_to_anchor=(1.05, 1), borderaxespad=0., fontsize=11)
ich oben hinzufüge , erhalte ich eine Legende mit Farben.Die normale Methode zum Zeichnen von Plots mit Punkten in verschiedenen Farben in matplotlib besteht darin, eine Liste von Farben als Parameter zu übergeben.
Z.B:
Wenn Sie eine Liste mit Listen haben und diese pro Liste farbig gestalten möchten. Ich denke, der eleganteste Weg ist der, der von @DSM vorgeschlagen wird. Machen Sie einfach eine Schleife, in der mehrere Aufrufe zum Streuen ausgeführt werden.
Aber wenn Sie es aus irgendeinem Grund mit nur einem Aufruf tun wollten, können Sie eine große Liste von Farben erstellen, mit einem Listenverständnis und ein wenig Unterteilung in Bodenbeläge:
quelle
Eine einfache Lösung
Wenn Sie nur einen Sammlungstyp haben (z. B. Streuung ohne Fehlerbalken), können Sie die Farben auch ändern, nachdem Sie sie gezeichnet haben. Dies ist manchmal einfacher durchzuführen.
Der einzige Code, den Sie benötigen:
Die Ausgabe gibt Ihnen unterschiedliche Farben, selbst wenn Sie viele verschiedene Streudiagramme im selben Unterplot haben.
quelle
Sie können die
plot()
Funktion jederzeit wie folgt verwenden:quelle
Diese Frage ist vor Januar 2013 und matplotlib 1.3.1 (August 2013), der ältesten stabilen Version, die Sie auf der matpplotlib-Website finden, etwas knifflig. Aber danach ist es ziemlich trivial.
Weil aktuelle Version von
matplotlib.pylab.scatter
Unterstützung Folgendes zuweist: Array der Farbnamenzeichenfolge, Array der Gleitkommazahl mit Farbkarte, Array von RGB oder RGBA.Diese Antwort ist der endlosen Leidenschaft von @ Oxinabox gewidmet, die 2013er Version von mir im Jahr 2015 zu korrigieren.
Sie haben zwei Möglichkeiten, den Scatter-Befehl mit mehreren Farben in einem einzigen Aufruf zu verwenden.
pylab.scatter
Verwenden Sie als Befehlsunterstützung das RGBA-Array, um die gewünschte Farbe zu erstellen.Anfang 2013 gibt es keine Möglichkeit dazu, da der Befehl nur eine einzige Farbe für die gesamte Streupunktsammlung unterstützt. Als ich mein 10000-Zeilen-Projekt durchführte, fand ich eine allgemeine Lösung, um es zu umgehen. es ist also sehr klebrig, aber ich kann es in jeder Form, Farbe, Größe und Transparenz machen. Dieser Trick kann auch zum Zeichnen von Pfaden, zum Sammeln von Linien usw. angewendet werden.
Der Code ist auch vom Quellcode von inspiriert
pyplot.scatter
Ich habe nur dupliziert, was Scatter macht, ohne ihn zum Zeichnen auszulösen.Der Befehl gibt
pyplot.scatter
einPatchCollection
Objekt zurück, in der Datei "matplotlib / collection.py" eine private Variable_facecolors
in derCollection
Klasse und eine Methodeset_facecolors
.Wenn Sie also Streupunkte zeichnen müssen, können Sie Folgendes tun:
quelle
Das funktioniert bei mir:
Verwenden Sie für jede Serie einen zufälligen RGB-Farbgenerator
quelle
plt.scatter(your values to the graph, color= (np.random.random_sample(), np.random.random_sample(), np.random.random_sample()) )
. Sie haben einen RGB-Generator erwähnt und eine RGB-Liste deklariert. Generatoren werden zwischen '()'Eine VIEL schnellere Lösung für große Datenmengen und eine begrenzte Anzahl von Farben ist die Verwendung von Pandas und der Groupby-Funktion:
quelle