python中整数值到颜色的映射范围

python中整数值到颜色的映射范围,python,matplotlib,Python,Matplotlib,我有从0到10000的整数。我想为每种颜色映射一种颜色。然后基于整数值,我想检索与整数值对应的颜色的RGB等效值。基本上,我希望在两种或更多颜色之间具有插值效果,例如,如果颜色为绿色和红色,则绿色的权重最小(0),红色的权重最大(10000)。如何使用matplotlib实现此映射,或者是否有其他库实现此映射。介于两个极端之间的颜色映射称为发散,matplotlib中有一个RdYlGn(红-黄-绿)颜色映射,完全符合您的要求。请看下面的图片。我不知道范围是否为0到10000,尽管它肯定能处理0到

我有从0到10000的整数。我想为每种颜色映射一种颜色。然后基于整数值,我想检索与整数值对应的颜色的RGB等效值。基本上,我希望在两种或更多颜色之间具有插值效果,例如,如果颜色为绿色和红色,则绿色的权重最小(0),红色的权重最大(10000)。如何使用matplotlib实现此映射,或者是否有其他库实现此映射。

介于两个极端之间的颜色映射称为发散,matplotlib中有一个RdYlGn(红-黄-绿)颜色映射,完全符合您的要求。请看下面的图片。我不知道范围是否为0到10000,尽管它肯定能处理0到100,您可以将您的范围映射到该范围。

确实可以从给定的颜色映射中采样10000种颜色:

#/usr/bin/python3
来自numpy import arange
从matplotlib导入pyplot作为plt
从matplotlib导入cm
从matplotlib.colors导入LinearSegmentedColormap
# ======
##数据:
N=10000
数据=arange(N+1)
# =================
##自定义颜色映射:
#红-绿颜色图:
cdict={'red':[(0.0,1.0,1.0),#red减少
(1.0, 0.0, 0.0)],
“绿色”:[(0.0,0.0,0.0),#绿色增加
(1.0, 1.0, 1.0)],
“蓝色”:[(0.0,0.0,0.0),#一点蓝色都没有
(1.0, 0.0, 0.0)]}
红色\绿色\厘米=线性分段彩色地图('red-green',cdict,N)
# ======
##绘图:
颜色=厘米。获取cmap(红色\绿色\厘米,N)
图=plt.图()
ax=图添加_子批次(111)
#每一行都有自己的颜色:
对于枚举中的i,x(数据):
ax.绘图(数据,数据*x,颜色=颜色(i))
图savefig(“红绿色厘米png”)
结果:

编辑

还可以添加颜色栏:

#/usr/bin/python3
来自numpy import arange
将matplotlib导入为mpl
从matplotlib导入pyplot作为plt
从matplotlib导入cm
从matplotlib.colors导入LinearSegmentedColormap
# ======
##数据:
N=10000
数据=arange(N+1)
# =================
##自定义颜色映射:
#红-绿颜色图:
cdict={'red':[(0.0,1.0,1.0),#red减少
(1.0, 0.0, 0.0)],
“绿色”:[(0.0,0.0,0.0),#绿色增加
(1.0, 1.0, 1.0)],
“蓝色”:[(0.0,0.0,0.0),#一点蓝色都没有
(1.0, 0.0, 0.0)] }
红色\绿色\厘米=线性分段彩色地图('red-green',cdict,N)
# ======
##绘图:
颜色=厘米。获取cmap(红色\绿色\厘米,N)
图=plt.图()
ax=图添加_子批次(111)
#每一行都有自己的颜色:
对于枚举中的i,x(数据):
ax.绘图(数据,数据*x,颜色=颜色(i))
#为颜色栏留出空间:
图.紧密布局(rect=[0,0,0.85,1])
#添加颜色栏:
ax_cb=图添加_轴([0.85,0.10,0.05,0.8])
norm=mpl.colors.Normalize(vmin=data[0],vmax=data[-1])
cb=mpl.colorbar.colorbase(ax\u cb,cmap=red\u green\u cm,norm=norm,orientation='vertical')
图savefig(“红绿色厘米png”)

如果数据范围从0到10000,则表明顺序调色板更合适,尽管如果不了解更多数据的性质,很难确定。