Matplotlib 峰值位于中心且边缘为零的Matpliblib颜色贴图

Matplotlib 峰值位于中心且边缘为零的Matpliblib颜色贴图,matplotlib,colormap,Matplotlib,Colormap,我正在寻找一个自定义颜色贴图,它高亮显示中心(值为1),边缘仅显示白色(值为0和2)。理想情况下,应该有一个从1到[0,2]的梯度 通常的彩色贴图则相反:从中心发散(中心为白色) 感谢您的帮助您可以根据matplotlib中的可用颜色贴图创建 from matplotlib.colors import ListedColormap def show_cmap(ax, cmap): n = 256 ax.imshow(np.tile(np.arange(n), [int(n*0.

我正在寻找一个自定义颜色贴图,它高亮显示中心(值为1),边缘仅显示白色(值为0和2)。理想情况下,应该有一个从1到[0,2]的梯度

通常的彩色贴图则相反:从中心发散(中心为白色)


感谢您的帮助

您可以根据matplotlib中的可用颜色贴图创建

from matplotlib.colors import ListedColormap

def show_cmap(ax, cmap):
    n = 256
    ax.imshow(np.tile(np.arange(n), [int(n*0.20),1]),
              cmap=cmap,
              interpolation="nearest", aspect="auto")
    ax.set_xticks([])
    ax.set_yticks([])
    ax.set_xticklabels([])
    ax.set_yticklabels([])
    

c1 = plt.cm.Blues(range(0, 128))
c2 = c1[::-1]
c = np.vstack([c1, c2])
cmap = ListedColormap(c)

fig, ax = plt.subplots(1, 1, figsize=(7.2, 7.2))
show_cmap(ax, cmap)

您可以在
matplotlib.colors
模块中使用中的方法进行此操作

在这里,我们列出了3种颜色(
[“白色”、“红色”、“白色”]
)。这可以通过更改这些颜色名称中的任何一种来轻松定制

例如:

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

cmap = LinearSegmentedColormap.from_list('wrw', ["white", "red", "white"], N=256)

a = np.arange(0, 2, 0.01).reshape(20, 10)
fig, ax = plt.subplots()

p = ax.pcolormesh(a, cmap=cmap, vmin=0, vmax=2)

fig.colorbar(p)

plt.show()

请检查下面的解决方案。