我知道可以通过执行以下操作来获取给定颜色图的标量值的RGBA元组:
from matplotlib import cm
rgba = cm.Blues(val)
print(rgba)
因此,我认为制作自定义连续颜色图很容易,该颜色图的色中心为零(0对应白色),其正值对应于红色,而负值对应于蓝色。这导致我进入以下示例代码:
import matplotlib.pyplot as plt
from matplotlib import cm
import numpy as np
X = np.linspace(0,3,15)
C = np.random.uniform(-1,1,15)
Y = X+C
c = np.zeros((15,4))
for ind,val in enumerate(C):
if val >= 0:
c[ind] = cm.Blues(val)
elif val < 0:
c[ind] = cm.Reds(val)
plt.scatter(X,Y,c=c)
plt.show()
问题是,我不知道如何切换颜色图的规范/色泽。从本质上讲,我该怎么做:
cm.Reds(value=scalar,
clims=(0,7.43))
cm.Blues(value=scalar,
clims=(0,-3.32))
在我的最终代码中,我将对Reds和Blues使用相同的标量范围的绝对长度。我只是想用我的伪代码来表达我的意思。是的,我该如何设置cmap的自定义范数,以便可以从标量值获取RGBA元组,以便可以对散点图进行颜色编码?