有很多方法可以实现这一点。可能最简单和最明显的方法是为所有20条线指定单独的线颜色:
line_colors = ['r', 'g', 'b', 'c', 'm', 'y', 'k', ...]
for ii in range(20):
plt.plot(x, y, c=line_colors[ii])
当然,手动输入20种不同的颜色字符串会有些麻烦!你也可以像unutbu的答案中那样绘制一个RGBA值数组来生成颜色,但是大多数内置的调色板都包含红色,因此您必须选择一个不包含红色的调色板,
设计自己的调色板,或者选择一系列在0和1之间的浮点值,这些值没有映射到调色板的红色区域。如果您不介意某些颜色被重复使用,一个可能更好的选择是使用
itertools.cycle
创建一个生成器对象,该对象以循环方式产生颜色:
from itertools import cycle
color_cycle = cycle(['g', 'b', 'c', 'm', 'y', 'k'])
for ii in range(20):
if ii == 0:
plt.plot(x, y, c='r')
else:
plt.plot(x, y, c=cycle.next())
事实上,这正是默认的 matplotlib 颜色循环的工作原理。每个轴对象都包含一个
itertools.cycle
,它会顺序地更改在该轴上绘制的每条线的默认颜色。
ax = plt.axes()
ax_color_cycle = ax._get_lines.color_cycle
print(ax_color_cycle)
print(ax_color_cycle.next())
print(ax_color_cycle.next())
print(ax_color_cycle.next())
color = cmap(float(i)/N)
- anilbeyN
是行数。在上面的图中是20。 - unutbu