【发布时间】:2014-11-24 08:23:51
【问题描述】:
我如何获得一个数字 NUM 的 matplotlib rgb 值:
- 颜色图('autumn_r' 在下面的示例中为黄色到红色)
- BoundryNorm 值(以下示例中的“2 到 10”)
- 数字 NUM
在我的例子中,我想:
- 给定任何小于或等于 2 的值,返回黄色的 rgb 值。
- 给定任何 10 或更大的值,返回红色的 rgb 值。
- 给定 3
下面的代码显示了颜色图的使用和定义我的边界值。现在我只需要一个函数来返回我的 rgb 值而不是做散点图。散点图仅用于可视化,因此我可以看到标准化正在按我的意愿工作。
import matplotlib.pyplot as plt
import matplotlib as mpl
from matplotlib import cm
import numpy as np
import copy
# setup the plot
fig, ax = plt.subplots(1,1, figsize=(6,6))
# define the data
NUM_VALS = 20
NORM_ENDS = (2,10)
x = np.random.uniform(0, NUM_VALS, size=NUM_VALS)
y = np.random.uniform(0, NUM_VALS, size=NUM_VALS)
tag = copy.deepcopy(y)
# define the colormap
cmap = plt.get_cmap('autumn_r')
cmaplist = [cmap(i) for i in range(cmap.N)]
# create the new map
cmap = cmap.from_list('Custom cmap', cmaplist[0:], cmap.N)
# define the bins and normalize
bounds = np.linspace(NORM_ENDS[0], NORM_ENDS[1], NORM_ENDS[1]-NORM_ENDS[0]+1)
norm = mpl.colors.BoundaryNorm(bounds, cmap.N)
# make the scatter
scat = ax.scatter(x,y,s=300, c=tag,cmap=cmap,norm=norm)
# create a second axes for the colorbar
ax2 = fig.add_axes([0.90, 0.1, 0.03, 0.8])
cb = mpl.colorbar.ColorbarBase(ax2, cmap=cmap, norm=norm, spacing='proportional', ticks=bounds, boundaries=bounds, format='%1i')
ax.set_title('Well defined discrete colors')
ax2.set_ylabel('Very custom cbar [-]', size=12)
plt.show()
【问题讨论】:
标签: python matplotlib rgb colormap