如何使用matplotlib生成新的彩虹色图?

时间:2014-09-17 13:13:53

标签: python matplotlib colors

我需要使用彩虹色图来绘制一个填充了地球物理值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?

1 个答案:

答案 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()

enter image description here