Получить цветной цикл линии по умолчанию
Я заметил, когда вы заговорили, что первая строка синяя, затем зеленая, затем красная и т.д.
Есть ли способ получить доступ к этому списку цветов? Я видел миллион сообщений о том, как изменить цикл цвета или получить доступ к итератору, но не о том, как просто получить список цветов, которые matplotlib выполняет по умолчанию.
Ответы
Ответ 1
В версиях matplotlib> = 1.5 вы можете напечатать rcParam
именем 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']
Или, что то же самое, в python3
:
print(plt.rcParams['axes.prop_cycle'].by_key()['color'])
В версиях <1.5 это называлось color_cycle
:
print plt.rcParams['axes.color_cycle']
# [u'b', u'g', u'r', u'c', u'm', u'y', u'k']
Обратите внимание, что цветовой цикл по умолчанию изменился в версии 2.0.0 http://matplotlib.org/users/dflt_style_changes.html#colors-in-default-property-cycle
Ответ 2
Часто нет необходимости получать цветной цикл по умолчанию из любого места, так как он по умолчанию, поэтому достаточно использовать его.
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()
![введите описание изображения здесь]()
Если вы хотите использовать цветной цикл по умолчанию для чего-то другого, есть, конечно, несколько вариантов.
"tab10" colormap
Сначала следует отметить, что цветовая палитра "tab10"
содержит цвета от цветового цикла по умолчанию, вы можете получить ее через cmap = plt.get_cmap("tab10")
.
Эквивалент выше, следовательно, будет
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()
Цвета от цветового цикла
Вы также можете напрямую использовать циферблат цветов, cycle = plt.rcParams['axes.prop_cycle'].by_key()['color']
. Это дает список с цветами из цикла, которые вы можете использовать для повторения.
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()
Обозначение CN
Наконец, нотация CN
позволяет получить N
-й цвет цветового цикла color="C{}".format(i)
. Однако это работает только для первых 10 цветов (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()
Все приведенные здесь коды дают один и тот же сюжет.