破碎/组合的彩色图

时间:2013-12-12 08:28:36

标签: colors matplotlib plot

我正在用imshow绘制一个2D标量场,我想清楚地对比正面的负值。有没有办法实现由另外两个组成的色彩图(例如喷射,hot为正,cool为负)?

1 个答案:

答案 0 :(得分:3)

您可以从现有的cmaps中读取颜色并添加它们,这很简单,但缺点很少。如果原始色彩图具有不同数量的颜色,则两者的“边缘”将不会居中。

如果它们具有相同的数字,则得到的cmap将是对称的,但如果正值等于负值,则'edge'将仅为零,例如-2& 2或-4& 4,等等。

这可以这样做:

import matplotlib.pyplot as plt
import numpy as np

cool = plt.cm.cool
hot = plt.cm.hot

cool_vals = [cool(i) for i in range(cool.N)]
hot_vals = [hot(i) for i in range(hot.N)]

comb_vals = cool_vals + hot_vals

# random hue with constant sat and value
new_cmap = matplotlib.colors.ListedColormap(comb_vals)

plt.imshow(np.arange(20*20).reshape(20,20)-199., interpolation='none', cmap=new_cmap)
plt.colorbar()

enter image description here

我不知道Matplotlib中非常奇特的方法。有一个全新的Python模块“TrollImage”,它具有使用色彩映射的非常好的实现。它的目标是卫星图像,但色彩图部分当然适用于任何类型的图像。