Ответы на Получение цикла цвета по умолчанию весьма полезны и указывают, что в версии 1.5 произошли изменения.
Мне интересно, есть ли простой способ "приостановить", «возобновить» и «сбросить» способ, которым Matplotlib циклически перебирает цвета по умолчанию без его реализации вручную .
Пример ниже не является хорошим способом сделать это вручную, а просто показывает, насколько гипотетическиМожно использовать colorpause()
, colorresume()
и colorreset()
.

def colorpause():
global increment_me
increment_me = False
def colorresume():
global increment_me
increment_me = True
def colorreset():
global icolor
icolor = 0
import matplotlib.pyplot as plt
xx = [[0 + 0.1*d, 1 + 0.1*d] for d in range(20)]
y = [1, 0]
if True:
icolorz = []
plt.figure()
colorz = plt.rcParams['axes.prop_cycle'].by_key()['color']
increment_me = True
icolor = 0
plt.subplot(2, 1, 1)
for i, x in enumerate(xx):
plt.plot(x, y, colorz[icolor], linewidth=2)
icolorz.append(icolor)
icolor += increment_me
icolor = icolor%len(colorz)
if i == 5:
colorpause()
if i == 10:
colorresume()
if i >=12 and not i%3:
colorreset()
plt.subplot(2, 1, 2)
plt.plot(icolorz)
plt.ylim(-0.5, 6.5)
plt.title('color number used')
plt.show()