如何为图中每条绘制的线选择新颜色
8 个回答
25
你可以使用预定义的“定性颜色图”,像这样:
import matplotlib as mpl
name = "Accent"
cmap = mpl.colormaps[name] # type: matplotlib.colors.ListedColormap
colors = cmap.colors # type: list
axes.set_prop_cycle(color=colors)
matplotlib.colormaps[]
是在 matplotlib 3.5(2021年发布)及以上版本中支持的,而旧的 matplotlib.cm.get_cmap()
方法已经被淘汰,并将在 matplotlib 3.9(2024年)中移除。想了解为什么你不能调用 axes.set_prop_cycle(color=cmap)
,可以查看这个讨论:https://github.com/matplotlib/matplotlib/issues/10840。
你可以在这里找到预定义的定性颜色图列表:https://matplotlib.org/gallery/color/colormap_reference.html:
212
我通常使用这两种方法中的第二种:
from matplotlib.pyplot import cm
import numpy as np
#variable n below should be number of curves to plot
#version 1:
color = cm.rainbow(np.linspace(0, 1, n))
for i, c in enumerate(color):
plt.plot(x, y, c=c)
#or version 2:
color = iter(cm.rainbow(np.linspace(0, 1, n)))
for i in range(n):
c = next(color)
plt.plot(x, y, c=c)
第二种的例子: