如何为matplotlib中的图中的每个绘制的线select新的颜色?

我不想为每个绘制线指定一种颜色:

for i in range(20): ax1.plot(x, y) 

如果你看一下这个图像,matplotlib会尝试为不同的每一行select颜色,但最终会重新使用颜色。 我只是想阻止它重复已经使用的颜色和/或给它一个颜色列表使用。

axes.color_cycle以上的matplotlib版本中,可以使用axes.color_cycle (参见示例 ),而在旧版本中则使用axes.color_cycle (请参阅示例 )。

我通常使用这3个3中的一个,我也不清楚1和2版本。

 from matplotlib.pyplot import cm #variable n should be number of curves to plot (I skipped this earlier thinking that it is obvious when looking at picture - srry my bad mistake xD): n=len(array_of_curves_to_plot) #version 1: color=cm.rainbow(np.linspace(0,1,n)) for i,c in zip(range(n),color): ax1.plot(x, y,c=c) #or version 2: - faster and better: color=iter(cm.rainbow(np.linspace(0,1,n))) c=next(color) plt.plot(x,y,c=c) #or version 3: color=iter(cm.rainbow(np.linspace(0,1,n))) for i in range(n): c=next(color) ax1.plot(x, y,c=c) 

3的例子: 例如情节与iter,下一个颜色

我不知道你是否可以自动改变颜色,但你可以利用你的循环产生不同的颜色:

 for i in range(20): ax1.plot(x, y, color = (0, i / 20.0, 0, 1) 

在这种情况下,颜色会从黑色变为100%绿色,但是如果您愿意,可以调整它。

查看matplotlib plot()文档并查找color关键字参数。

如果你想喂一个颜色列表,只要确保你有一个足够大的列表,然后使用循环的索引来select颜色

 colors = ['r', 'b', ...., 'w'] for i in range(20): ax1.plot(x, y, color = colors[i]) 

prop_cycle

color_cycle在1.5中被弃用,赞成这种泛化: http : color_cycle

 # cycler is a separate package extracted matplotlib. from cycler import cycler import matplotlib.pyplot as plt plt.rc('axes', prop_cycle=(cycler('color', ['r', 'g', 'b']))) plt.plot([1, 2]) plt.plot([2, 3]) plt.plot([3, 4]) plt.plot([4, 5]) plt.plot([5, 6]) plt.show() 

也显示在(现在严重的命名)示例中: http : //matplotlib.org/1.5.1/examples/color/color_cycle_demo.html提到: https : //stackoverflow.com/a/4971431/895245

在matplotlib 1.5.1中testing。

您还可以更改matplotlibrc文件中的默认颜色循环。 如果您不知道该文件在哪里,请在python中执行以下操作:

 import matplotlib matplotlib.matplotlib_fname() 

这会告诉你当前使用的matplotlibrc文件的path。 在这个文件中,你会发现许多其他设置也为axes.color.cycle 。 只要把你想要的颜色序列,你会发现它在你做的每一个情节。 请注意,您也可以在matplotlib中使用所有有效的html颜色名称。