TL; DR Nein, das kann nicht automatisch gemacht werden . Ja, es ist möglich.
import matplotlib.pyplot as plt
my_colors = plt.rcParams['axes.prop_cycle']() # <<< note that we CALL the prop_cycle
fig, axes = plt.subplots(2,3)
for ax in axes.flatten(): ax.plot((0,1), (0,1), **next(my_colors))
Jedes Diagramm ( axes
) in einer Abbildung ( figure
) hat einen eigenen Farbzyklus. Wenn Sie nicht für jedes Diagramm eine andere Farbe erzwingen, haben alle Diagramme dieselbe Farbreihenfolge, aber wenn wir etwas strecken, bedeutet dies "automatisch" kann es getan werden.
Das OP schrieb
[...] Ich muss jedes Diagramm mit einer anderen Farbe identifizieren, die automatisch von [Matplotlib] generiert werden soll.
Aber ... Matplotlib generiert automatisch unterschiedliche Farben für jede unterschiedliche Kurve
In [10]: import numpy as np
...: import matplotlib.pyplot as plt
In [11]: plt.plot((0,1), (0,1), (1,2), (1,0));
Out[11]:
Warum also die OP-Anfrage? Wenn wir weiterlesen, haben wir
Können Sie mir bitte eine Methode geben, um verschiedene Farben für verschiedene Diagramme in dieselbe Figur zu setzen?
und es ist sinnvoll, weil jede Handlung (jede axes
in Matplotlibs Sprache) ihre eigene hat color_cycle
(oder besser gesagt, 2018 prop_cycle
) und jede Handlung ( axes
) dieselben Farben in derselben Reihenfolge wiederverwendet.
In [12]: fig, axes = plt.subplots(2,3)
In [13]: for ax in axes.flatten():
...: ax.plot((0,1), (0,1))
Wenn dies die Bedeutung der ursprünglichen Frage ist, besteht eine Möglichkeit darin, für jedes Diagramm explizit eine andere Farbe zu benennen.
Wenn die Diagramme (wie so oft) in einer Schleife generiert werden, benötigen wir eine zusätzliche Schleifenvariable, um die von Matplotlib automatisch ausgewählte Farbe zu überschreiben .
In [14]: fig, axes = plt.subplots(2,3)
In [15]: for ax, short_color_name in zip(axes.flatten(), 'brgkyc'):
...: ax.plot((0,1), (0,1), short_color_name)
Eine andere Möglichkeit besteht darin, ein Cycler-Objekt zu instanziieren
from cycler import cycler
my_cycler = cycler('color', ['k', 'r']) * cycler('linewidth', [1., 1.5, 2.])
actual_cycler = my_cycler()
fig, axes = plt.subplots(2,3)
for ax in axes.flat:
ax.plot((0,1), (0,1), **next(actual_cycler))
Beachten Sie, dass type(my_cycler)
ist cycler.Cycler
aber type(actual_cycler)
ist itertools.cycle
.
set_color_cycle
veraltet ist, sodass diese Zeile sein sollteplt.gca().set_prop_cycle(plt.cycler('color', plt.cm.jet(np.linspace(0, 1, num_plots))))
und ändern Sie sie einfachplt.cm.YOUR_PREFERED_COLOR_MAP
entsprechend Ihren Anforderungen.