这几乎是其他几个问题的重复。关键是matplotlib需要一个ScalarMappable实例(通常是图像、散点图等)来从中生成colormap。如果你用一个不直接的方法来绘制的话。您将需要一个Normalize实例来定义colormap的最小/最大/缩放/等,以及一个Colormap实例来定义颜色。在
不过,你还有另外一条皱纹。你没有使用颜色贴图,所以你需要建立一个。在
下面是一个使用离散颜色贴图的示例:import numpy as np
import matplotlib.colors as mcolors
import matplotlib.cm
import matplotlib.pyplot as plt
# Your example...
nvalues = range(0,30)
xvalues = np.linspace(0,10)
hsv2rgb = lambda hue: mcolors.hsv_to_rgb([hue,0.9,0.7])
hues = np.linspace(0, 0.7, len(nvalues))
colors = [hsv2rgb(hue) for hue in hues]
dataset = [(xvalues-5-0.5*n)**2 for n in nvalues]
fig, ax = plt.subplots()
for n in nvalues:
ax.plot(dataset[n], color=colors[n])
# Fake a ScalarMappable so you can display a colormap
cmap, norm = mcolors.from_levels_and_colors(range(len(nvalues) + 1), colors)
sm = matplotlib.cm.ScalarMappable(cmap=cmap, norm=norm)
sm.set_array([])
fig.colorbar(sm)
plt.show()
如果您喜欢连续颜色贴图:
^{pr2}$