对应于值的散点图颜色
Scatter plot colors corresponding to a value
在所有的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)
你得到不同颜色的点,很好。
但是!我不想只得到漂亮的彩色点!我希望根据 B.
中值的 "intensity" 对点进行着色
这是我愚蠢的尝试:
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 中值的强度,您可以得到带颜色的点,非常好:
但是!!我想将颜色的 "scale" 更改为深蓝色为 0,深红色为 2。在这种情况下,第三个点(与 B[2]=1.46
关联)应该是橙色而不是深红色!我应该怎么做?
您需要使用 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()
在所有的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)
你得到不同颜色的点,很好。
但是!我不想只得到漂亮的彩色点!我希望根据 B.
中值的 "intensity" 对点进行着色这是我愚蠢的尝试:
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 中值的强度,您可以得到带颜色的点,非常好:
但是!!我想将颜色的 "scale" 更改为深蓝色为 0,深红色为 2。在这种情况下,第三个点(与 B[2]=1.46
关联)应该是橙色而不是深红色!我应该怎么做?
您需要使用 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()