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

jmb*_*uis 1 python colors matplotlib

我需要使用彩虹色图来绘制填充有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()
Run Code Online (Sandbox Code Playgroud)

如何创建一个范围从黑色到0.0的色彩图,然后逐渐显示以下颜色:紫色,蓝色,青色,绿色,黄色,最后红色为1.0?

jmb*_*uis 6

我使用了matbook 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()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述