Ich möchte NICHT für jede gezeichnete Linie eine Farbe angeben und jeder Linie eine eigene Farbe geben. Aber wenn ich renne:
from matplotlib import pyplot as plt
for i in range(20):
plt.plot([0, 1], [i, i])
plt.show()
dann bekomme ich diese Ausgabe:
Wenn Sie sich das Bild oben ansehen, können Sie sehen, dass matplotlib versucht, Farben für jede Zeile auszuwählen, die unterschiedlich sind, aber schließlich Farben wiederverwendet - die oberen zehn Zeilen verwenden dieselben Farben wie die unteren zehn. Ich möchte nur verhindern, dass bereits verwendete Farben wiederholt werden und / oder eine Liste der zu verwendenden Farben eingefügt wird.
matplotlib
Dlamotte
quelle
quelle
[colormap(i) for i in np.linspace(0, 0.9, num_plots)]
, wocolormap
ist eine der Farbkartenmatplotlib.pyplot.cm
undnumplots
ist die Nummer von einzigartigen Farben, die Sie wollen. Beachten Sie, dass dies zu Farben führen kann, die schwer voneinander zu unterscheiden sind !!Normalerweise benutze ich die zweite davon:
Beispiel von 2:
quelle
prop_cycle
color_cycle
wurde in 1.5 zugunsten dieser Verallgemeinerung veraltet: http://matplotlib.org/users/whats_new.html#added-axes-prop-cycle-key-to-rcparamsEbenfalls im (jetzt schlecht benannten) Beispiel gezeigt: http://matplotlib.org/1.5.1/examples/color/color_cycle_demo.html, erwähnt unter: https://stackoverflow.com/a/4971431/895245
Getestet in Matplotlib 1.5.1.
quelle
Ich weiß nicht, ob Sie die Farbe automatisch ändern können, aber Sie könnten Ihre Schleife nutzen, um verschiedene Farben zu erzeugen:
In diesem Fall variieren die Farben von Schwarz bis 100% Grün, aber Sie können sie einstellen, wenn Sie möchten.
Sehen Sie sich die Dokumente zu matplotlib plot () an und suchen Sie nach dem
color
Schlüsselwortargument.Wenn Sie eine Liste mit Farben füttern möchten, stellen Sie einfach sicher, dass Sie eine Liste haben, die groß genug ist, und verwenden Sie dann den Index der Schleife, um die Farbe auszuwählen
quelle
Sie können eine vordefinierte "qualitative Farbkarte" wie folgt verwenden:
Getestet auf matplotlib 3.0.3. Unter https://github.com/matplotlib/matplotlib/issues/10840 finden Sie Informationen dazu, warum Sie nicht anrufen können
axes.set_prop_cycle(color=cmap)
.Eine Liste vordefinierter qualitativer Farbkarten finden Sie unter https://matplotlib.org/gallery/color/colormap_reference.html :
quelle
Sie können auch den Standardfarbzyklus in Ihrer
matplotlibrc
Datei ändern . Wenn Sie nicht wissen, wo sich diese Datei befindet, gehen Sie in Python wie folgt vor:Dies zeigt Ihnen den Pfad zu Ihrer aktuell verwendeten matplotlibrc-Datei. In dieser Datei finden Sie neben vielen anderen Einstellungen auch die für
axes.color.cycle
. Geben Sie einfach die gewünschte Farbfolge ein und Sie finden sie in jedem Plot, den Sie erstellen. Beachten Sie, dass Sie in matplotlib auch alle gültigen HTML-Farbnamen verwenden können.quelle
Wie die Antwort von Ciro zeigt , können Sie
prop_cycle
eine Liste von Farben festlegen, durch die matplotlib durchlaufen soll. Aber wie viele Farben? Was ist, wenn Sie denselben Farbzyklus für viele Diagramme mit unterschiedlicher Anzahl von Linien verwenden möchten?Eine Taktik wäre, eine Formel wie die von https://gamedev.stackexchange.com/a/46469/22397 zu verwenden , um eine unendliche Folge von Farben zu erzeugen, bei der jede Farbe versucht, sich signifikant von allen vorhergehenden zu unterscheiden.
prop_cycle
Akzeptiert leider keine unendlichen Sequenzen - es bleibt für immer hängen, wenn Sie eine übergeben. Wir können jedoch beispielsweise die ersten 1000 Farben, die aus einer solchen Sequenz generiert wurden, als Farbzyklus festlegen. Auf diese Weise sollten Sie für Diagramme mit einer vernünftigen Anzahl von Linien unterscheidbare Farben erhalten.Beispiel:
Ausgabe:
Jetzt sind alle Farben unterschiedlich - obwohl ich zugebe, dass ich Schwierigkeiten habe, einige davon zu unterscheiden!
quelle