散点图颜色对应数值

5

在所有的颜色地图帖子中,我没有找到这个答案,或者可能没有理解它。

我想要制作一个带有颜色的散点图。

我有一个列表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个回答

7
您需要使用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()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接