对应于值的散点图颜色

时间:2015-05-06 21:11:17

标签: python matplotlib colormap

在所有的colormap帖子中,我都没有找到这个答案,或者可能不理解。

我想用颜色制作散点图。

我有一个清单B:

[1.29,
 1.27,
 1.46,
 0.91,
 0.56,
 0.99,
 1.00,
 0.37,
 1.24,
 1.23]

如果您这样做,我将使用一个愚蠢的例子:

import matplotlib.pyplot as plt
from matplotlib import cm
from math import sin

x=range(10)
y=[sin(i) for i in x]
colors=np.linspace(0,1,10)

plt.scatter(x,y,c=colors,cmap=cm.jet)

你得到不同颜色的点,很好。 enter image description here

但是!我不想只得到漂亮的彩色点!我希望根据"强度"对点进行着色。 B中的值。

这是我的愚蠢尝试:

import matplotlib.pyplot as plt
from matplotlib import cm
from math import sin

x=range(10)
y=[sin(i) for i in x]
#colors=np.linspace(0,1,10)
B=[1.29,1.27,1.46,0.91,0.56,0.99,1.00,0.37,1.24,1.23]

plt.scatter(x,y,c=B,cmap=cm.jet)

根据B中值的强度得到彩色点,非常好: enter image description here

但是!!我想改变"规模"颜色的深蓝色为0,深红色为2.在这种情况下,第三个点(与B[2]=1.46相关联)应该是橙色而不是深红色!我该怎么做?

1 个答案:

答案 0 :(得分:6)

您需要使用vmin和vmax参数手动设置最小和最大颜色。对于你的情况,这是,

import matplotlib.pyplot as plt
from matplotlib import cm
from math import sin

x=range(10)
y=[sin(i) for i in x]
#colors=np.linspace(0,1,10)
B=[1.29,1.27,1.46,0.91,0.56,0.99,1.00,0.37,1.24,1.23]

cs = plt.scatter(x,y,c=B,cmap=cm.jet,vmin=0.,vmax=2.)
plt.colorbar(cs)
plt.show()