色彩映射基本上只是您可以调用的插值函数.它们将区间[0,1]中的值映射到颜色.因此,您可以从两个地图中采样颜色,然后将它们组合在一起:
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.colors as mcolors
data = np.random.rand(10,10) * 2 - 1
# sample the colormaps that you want to use. Use 128 from each so we get 256
# colors in total
colors1 = plt.cm.binary(np.linspace(0., 1, 128))
colors2 = plt.cm.gist_heat_r(np.linspace(0, 1, 128))
# combine them and build a new colormap
colors = np.vstack((colors1, colors2))
mymap = mcolors.LinearSegmentedColormap.from_list('my_colormap', colors)
plt.pcolor(data, cmap=mymap)
plt.colorbar()
plt.show()
结果:
注意:我知道您可能对此有特殊需求,但在我看来这不是一个好方法:您如何区分-0.1与0.9? -0.9从0.1?
防止这种情况的一种方法是仅从~0.2到~0.8采样地图(例如:colors1 = plt.cm.binary(np.linspace(0.2,0.8,128)))因此它们不会一直到黑色: