我需要使用彩虹色图来绘制一个填充了地球物理值0.0到1.0的图像。
我尝试了matplotlib中现有的彩虹色图,但我并不完全满意:
from matplotlib import pyplot as plt
import numpy as np
plt.pcolor(np.random.rand(10,10),cmap='rainbow')
plt.colorbar()
plt.show()
如何创建一个范围为黑色的色彩图,其值为0.0,然后逐渐显示以下颜色:紫色,蓝色,青色,绿色,黄色,最后为红色,值为1.0?
答案 0 :(得分:6)
我使用了cookbook matplotlib中建议的matplotlib.colors.LinearSegmentedColormap。
import matplotlib
from matplotlib import pyplot as plt
import numpy as np
cdict = {'red': ((0.0, 0.0, 0.0),
(0.1, 0.5, 0.5),
(0.2, 0.0, 0.0),
(0.4, 0.2, 0.2),
(0.6, 0.0, 0.0),
(0.8, 1.0, 1.0),
(1.0, 1.0, 1.0)),
'green':((0.0, 0.0, 0.0),
(0.1, 0.0, 0.0),
(0.2, 0.0, 0.0),
(0.4, 1.0, 1.0),
(0.6, 1.0, 1.0),
(0.8, 1.0, 1.0),
(1.0, 0.0, 0.0)),
'blue': ((0.0, 0.0, 0.0),
(0.1, 0.5, 0.5),
(0.2, 1.0, 1.0),
(0.4, 1.0, 1.0),
(0.6, 0.0, 0.0),
(0.8, 0.0, 0.0),
(1.0, 0.0, 0.0))}
my_cmap = matplotlib.colors.LinearSegmentedColormap('my_colormap',cdict,256)
plt.pcolor(np.random.rand(10,10),cmap=my_cmap)
plt.colorbar()
plt.show()