您问题的答案与其他两个SO问题相关。
答案如何在matplotlib中为图形中的每个绘图线选择新颜色? 解释了如何定义默认的颜色列表,该列表会循环显示以选择要绘制的下一种颜色。 这是通过set_color_cycle方法完成的。
但是,您希望获得正确的颜色列表,而使用颜色映射表最容易做到这一点,如对此问题的答案所述:从matplotlib中的给定颜色映射表创建颜色生成器。 在那里,颜色图的取值范围是0到1,并返回颜色。
因此,对于您的20行,您想以1/20的步长从0循环到1。 具体来说,您希望将格式从0循环到19/20,因为1映射回0。
在此示例中完成此操作:
import matplotlib.pyplot as plt
import numpy as np
NUM_COLORS = 20
cm = plt.get_cmap('gist_rainbow')
fig = plt.figure()
ax = fig.add_subplot(111)
ax.set_color_cycle([cm(1.*i/NUM_COLORS) for i in range(NUM_COLORS)])
for i in range(NUM_COLORS):
ax.plot(np.arange(10)*(i+1))
fig.savefig('moreColors.png')
plt.show()
这是结果图:
替代的,更好的(有争议的)