Frage Holen Sie sich den Standard-Farbzyklus


Mir ist aufgefallen, dass die erste Zeile blau ist, dann grün, dann rot und so weiter.

Gibt es eine Möglichkeit, auf diese Liste von Farben zuzugreifen? Ich habe eine Million Beiträge darüber gesehen, wie man den Farbzyklus ändert oder auf den Iterator zugreift, aber nicht darauf, wie man nur die Liste der Farben erhält, die matplotlib standardmäßig durchläuft.


20
2018-02-07 09:34


Ursprung


Antworten:


In Matplotlib-Versionen> = 1.5 können Sie die rcParam namens axes.prop_cycle:

print plt.rcParams['axes.prop_cycle'].by_key()['color']

# [u'#1f77b4', u'#ff7f0e', u'#2ca02c', u'#d62728', u'#9467bd', u'#8c564b', u'#e377c2', u'#7f7f7f', u'#bcbd22', u'#17becf']

In Versionen <1.5 wurde dies aufgerufen color_cycle:

print plt.rcParams['axes.color_cycle']

# [u'b', u'g', u'r', u'c', u'm', u'y', u'k']

Beachten Sie, dass der Standardfarbzyklus in Version 2.0.0 geändert wurde http://matplotlib.org/users/dflt_style_changes.html#colors-in-default-property-cycle


29
2018-02-07 13:24



Häufig ist es nicht erforderlich, den Standardfarbzyklus von einem beliebigen Ort zu erhalten, da dies der Standardfarbzyklus ist.

import numpy as np
import matplotlib.pyplot as plt

fig = plt.figure()
ax = fig.add_subplot(111)

t = np.arange(5)

for i in range(4):
    line, = ax.plot(t,i*(t+1), linestyle = '-')
    ax.plot(t,i*(t+1)+.3,color = line.get_color(), linestyle = ':')

plt.show()

enter image description here

Falls du willst benutzen Der Standardfarbzyklus für etwas anderes gibt es natürlich mehrere Optionen.

"tab10" Colormap

Zunächst sollte erwähnt werden, dass die "tab10" colormap umfasst die Farben aus dem Standardfarbzyklus, Sie können es über erhalten cmap = plt.get_cmap("tab10").

Gleichbedeutend mit dem oben Gesagten wäre also

import numpy as np
import matplotlib.pyplot as plt

fig = plt.figure()
ax = fig.add_subplot(111)

t = np.arange(5)
cmap = plt.get_cmap("tab10")
for i in range(4):
    ax.plot(t,i*(t+1),   color=cmap(i), linestyle = '-')
    ax.plot(t,i*(t+1)+.3,color=cmap(i), linestyle = ':')

plt.show()

Farben aus dem Farbzyklus

Sie können den Farbcycler auch direkt verwenden, cycle = plt.rcParams['axes.prop_cycle'].by_key()['color']. Dies gibt eine Liste mit den Farben aus dem Zyklus, mit denen Sie iterieren können.

import numpy as np
import matplotlib.pyplot as plt

fig = plt.figure()
ax = fig.add_subplot(111)

t = np.arange(5)
cycle = plt.rcParams['axes.prop_cycle'].by_key()['color']

for i in range(4):
    ax.plot(t,i*(t+1),   color=cycle[i], linestyle = '-')
    ax.plot(t,i*(t+1)+.3,color=cycle[i], linestyle = ':')

plt.show()

Das CN Notation

Endlich, das CN Notation erlaubt es, die Nth Farbe des Farbzyklus, color="C{}".format(i). Dies funktioniert jedoch nur für die ersten 10 Farben (N in [0,1,...9])

import numpy as np
import matplotlib.pyplot as plt

fig = plt.figure()
ax = fig.add_subplot(111)

t = np.arange(5)

for i in range(4):
    ax.plot(t,i*(t+1),   color="C{}".format(i), linestyle = '-')
    ax.plot(t,i*(t+1)+.3,color="C{}".format(i), linestyle = ':')

plt.show()

Alle hier vorgestellten Codes ergeben die gleiche Darstellung.


16
2017-12-12 13:10