2015-05-06 88 views
3

在所有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关联)应该是橙色而不是深红色!我应该怎么做?

回答

4

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

非常好,谢谢! – Greenfire