如何在python中创建从绿色到红色的热图?

我试图绘制范围为-3到3的对数比率,并希望负比率为绿色,正值为红色,对数比率为0(中心)为白色. matplotlib中没有预先存在的颜色方案提供此选项,我无法弄清楚如何手动输出漂亮的渐变.

解决方法:

您可以使用LinearSegmentedColormap创建自己的.我喜欢在上限和下限将红色和绿色通道设置为小于1.0的值,因此颜色不会太亮(这里我使用的是0.8).根据您的口味调整.

有关详细信息,请参阅matplotlib网站上的custom_cmap example.

这是一个有效的例子:

import matplotlib.pyplot as plt
import matplotlib.colors as colors
import numpy as np

# This dictionary defines the colormap
cdict = {'red':  ((0.0, 0.0, 0.0),   # no red at 0
                  (0.5, 1.0, 1.0),   # all channels set to 1.0 at 0.5 to create white
                  (1.0, 0.8, 0.8)),  # set to 0.8 so its not too bright at 1

        'green': ((0.0, 0.8, 0.8),   # set to 0.8 so its not too bright at 0
                  (0.5, 1.0, 1.0),   # all channels set to 1.0 at 0.5 to create white
                  (1.0, 0.0, 0.0)),  # no green at 1

        'blue':  ((0.0, 0.0, 0.0),   # no blue at 0
                  (0.5, 1.0, 1.0),   # all channels set to 1.0 at 0.5 to create white
                  (1.0, 0.0, 0.0))   # no blue at 1
       }

# Create the colormap using the dictionary
GnRd = colors.LinearSegmentedColormap('GnRd', cdict)

# Make a figure and axes
fig,ax = plt.subplots(1)

# Some fake data in the range -3 to 3
dummydata = np.random.rand(5,5)*6.-3.

# Plot the fake data
p=ax.pcolormesh(dummydata,cmap=GnRd,vmin=-3,vmax=3)

# Make a colorbar
fig.colorbar(p,ax=ax)

plt.show()

如何在python中创建从绿色到红色的热图?

上一篇:python-将1个直方图添加到Clustermap的一侧


下一篇:如何通过python中的热图减法显示两个矩阵的差异?