您显示的图没有通过图的垂直轴设置颜色(这就是我认为的y值)。取而代之的是,它只覆盖了8个不同的地块,每个地块都有不同的颜色,而没有说明颜色的含义。
这是一个看起来像您的情节的示例:
import numpy as np
import matplotlib.pyplot as plt
from matplotlib import cm
# some fake data:
x = np.linspace(0, 2*np.pi, 1000)
fs = np.arange(1, 5.)
ys = np.sin(x*fs[:, None])
for y, f in zip(ys, fs):
plt.plot(x, y, lw=3, c=cm.hot(f/5))
如果您实际上希望一行的颜色相对于其值发生变化,则必须对其进行修改,因为据我所知,任何给定的
Line2D
对象只能只有一种颜色。一种方法是绘制散点图,其中每个点可以具有任何颜色。
x = np.linspace(0, 2*np.pi, 1000)
y = np.sin(2*x)
plt.scatter(x,y, c=cm.hot(np.abs(y)), edgecolor='none')
笔记:
颜色矢量的范围应在0
和1
之间,因此,如果使用y.max() > 1
,则对其进行归一化:c=cm.hot(y/y.max())
并确保其均为正值。 我使用了edgecolor='none'
,因为默认情况下scatter
标记具有黑色轮廓,这使其看起来不太像一条统一的线。 如果您的数据间隔太远,如果您不希望标记之间有间隙,则必须对数据进行插值。