color cycler в matplotlib — как повторить каждый цвет один раз перед циклированием

#python #matplotlib

#python #matplotlib

Вопрос:

если у меня есть 4 кривые на графике, и я хочу представить их в последовательной цветовой схеме (например, Blues colormap), я бы добавил следующий фрагмент кода:

 
num_plots=4

plt.gca().set_prop_cycle(plt.cycler('color', plt.cm.Blues(np.linspace(0.2, 1, num_plots))))

 

Каждая кривая будет другого синего цвета.

Что, если я хочу, чтобы цвета повторялись один раз в последовательности? Таким образом, вместо «светло-голубой, синий, темно-синий, темно-темно-синий» в качестве порядка цвета кривых, вместо этого он становится «светло-голубой, светло-голубой, темно-синий, темно-синий». Цвет меняется только после двух последовательных кривых, а не только одной. Как я могу изменить свой код, чтобы сделать это?

Ответ №1:

Вы можете добиться этого, изменив массив, в который передается plt.cm.Blues . Например

 num_plots=4
color_source = np.linspace(0.2,1,num_plots)
color_repeat = np.repeat(color_source,2)

plt.gca().set_prop_cycle(plt.cycler('color',plt.cm.Blues(color_repeat)))
for ind in range(20):
    plt.plot(np.linspace(1,10,10) ind)
 

вывод