use*_*827 5 python matplotlib seaborn
如何更改色彩映射颜色方案以在点之外显示相同的颜色.
例如,这是我的色彩映射:
import palettable
cmap = palettable.colorbrewer.sequential.YlGn_9.mpl_colormap
Run Code Online (Sandbox Code Playgroud)
如果我使用此色彩图绘制0到100的范围,我如何修改色彩图,使其超过50,它会变为红色?
您可以通过将两个不同的颜色图堆叠在一起来为给定范围(0→100)创建颜色图,如下所示:
插图:
import numpy as np
import matplotlib.pyplot as plt
import palettable
import matplotlib.colors as mcolors
# Set random seed
np.random.seed(42)
# Create random values of shape 10x10
data = np.random.rand(10,10) * 100
# Given colormap which takes values from 0?50
colors1 = palettable.colorbrewer.sequential.YlGn_9.mpl_colormap(np.linspace(0, 1, 256))
# Red colormap which takes values from 50?100
colors2 = plt.cm.Reds(np.linspace(0, 1, 256))
# stacking the 2 arrays row-wise
colors = np.vstack((colors1, colors2))
# generating a smoothly-varying LinearSegmentedColormap
cmap = mcolors.LinearSegmentedColormap.from_list('colormap', colors)
plt.pcolor(data, cmap=cmap)
plt.colorbar()
# setting the lower and upper limits of the colorbar
plt.clim(0, 100)
plt.show()
Run Code Online (Sandbox Code Playgroud)
如果您希望上部颜色相同而不是在色图的长度上展开,您可以进行以下修改:
colors2 = plt.cm.Reds(np.linspace(1, 1, 256))
Run Code Online (Sandbox Code Playgroud)