您发送的该链接具有以下内容:
但是,如果我认为这些颜色图很难看怎么办?好吧,只需使用 matplotlib.colors.LinearSegmentedColormap 自己制作。首先,创建一个脚本,将范围 (0,1) 映射到 RGB 光谱中的值。在这本字典中,您将有一系列元组,用于每种颜色“红色”、“绿色”和“蓝色”。每个颜色系列中的第一个元素需要从 0 到 1 排序,中间有任意间距。现在,考虑下面“红色”系列中的 (0.5, 1.0, 0.7)。该元组表示,在 (0,1) 范围内的 0.5 处,从下到 1.0 进行插值,从 0.7 开始插值。通常,每个元组中的后两个值是相同的,但使用不同的值有助于在颜色图中放置中断。这比听起来更容易理解,正如这个简单的脚本所示:
1 from pylab import *
2 cdict = {'red': ((0.0, 0.0, 0.0),
3 (0.5, 1.0, 0.7),
4 (1.0, 1.0, 1.0)),
5 'green': ((0.0, 0.0, 0.0),
6 (0.5, 1.0, 0.0),
7 (1.0, 1.0, 1.0)),
8 'blue': ((0.0, 0.0, 0.0),
9 (0.5, 1.0, 0.0),
10 (1.0, 0.5, 1.0))}
11 my_cmap = matplotlib.colors.LinearSegmentedColormap('my_colormap',cdict,256)
12 pcolor(rand(10,10),cmap=my_cmap)
13 colorbar()
这不正是你想要的吗?
这是如何使用您提供的图像执行此操作的示例:
import matplotlib
from matplotlib import pyplot as plt
from pylab import *
img = ones((5,5))
img[1][1] = 2
cdict = {'red': ((0.0, 0.0, 0.0),
(0.5, 1.0, 0.7),
(1.0, 1.0, 1.0)),
'green': ((0.0, 0.0, 0.0),
(0.5, 1.0, 0.0),
(1.0, 1.0, 1.0)),
'blue': ((0.0, 0.0, 0.0),
(0.5, 1.0, 0.0),
(1.0, 0.5, 1.0))}
my_cmap = matplotlib.colors.LinearSegmentedColormap('my_colormap',cdict,256)
plt.pcolor(img,cmap=my_cmap)
plt.colorbar()
plt.show()
此外,如果您真的想将数字映射到颜色,则可以使用您链接到的示例中指定的离散 cmap,这是 scipy 文档提供的示例方法:
def discrete_cmap(N=8):
"""create a colormap with N (N<15) discrete colors and register it"""
# define individual colors as hex values
cpool = [ '#bd2309', '#bbb12d', '#1480fa', '#14fa2f', '#000000',
'#faf214', '#2edfea', '#ea2ec4', '#ea2e40', '#cdcdcd',
'#577a4d', '#2e46c0', '#f59422', '#219774', '#8086d9' ]
cmap3 = col.ListedColormap(cpool[0:N], 'indexed')
cm.register_cmap(cmap=cmap3)