我想将两个颜色Map表合并为一个,这样我就可以使用一个cmap
表示负值,另一个表示正值。
目前,我用掩码数组来做,用一个cmap
绘制一个图像,用另一个绘制另一个图像,结果是:
的数据
具有下面数据
dat = np.random.rand(10,10) * 2 - 1
pos = np.ma.masked_array(dat, dat<0)
neg = np.ma.masked_array(dat, dat>=0)
字符串
我画了pos
和gist_heat_r
,neg
和binary
。
我想有一个单一的颜色条与组合cmap
的,所以这是不正确的做法对我来说。
那么,我如何将两个现有的cmaps
合并为一个呢?
编辑:我承认,这是一个重复,但这里给出的答案更清晰。同时,示例图像使它更清晰。
2条答案
按热度按时间laawzig21#
色彩Map表基本上只是你可以调用的插值函数。它们将区间[0,1]中的值Map到颜色。所以你可以从两个Map中采样颜色,然后合并组合它们:
字符串
结果:x1c 0d1x
注意事项:我知道你可能有特殊的需求,但在我看来,这不是一个好方法:你将如何区分-0.1和0.9?-0.9和0.1?
防止这种情况的一种方法是仅从~0.2到~0.8(例如:
colors1 = plt.cm.binary(np.linspace(0.2, 0.8, 128))
)对贴图进行采样,这样它们就不会一直到黑色:的
tkclm6bt2#
我同意公认的答案,但为了不只是在~0.2到~0.8之间采样,你可以例如反转二进制色图。下面是如何做到这一点。
字符串
主要变化是将
plt.cm.binary
替换为plt.cm.binary_r
。