【问题标题】:Scatter plot colors corresponding to a value对应于某个值的散点图颜色
【发布时间】:2015-07-17 05:32:17
【问题描述】:

在所有颜色图帖子中我都没有找到这个答案,或者可能不明白。

我想用颜色制作散点图。

我有一个清单 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)

你得到不同颜色的积分,很好。

但是!我不想只得到漂亮的颜色点!我希望根据 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 中值的强度得到不同颜色的点,非常好:

但是!!我想将颜色的“比例”更改为 0 为深蓝色,2 为深红色。在这种情况下,第三点(与 B[2]=1.46 相关联)应该是橙色而不是深红色!我该怎么做?

【问题讨论】:

    标签: python matplotlib colormap


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2015-06-06
      • 1970-01-01
      • 2013-06-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多