Matplotlib 如何将热图颜色缩放到均匀的颜色分布?

Matplotlib 如何将热图颜色缩放到均匀的颜色分布?,matplotlib,Matplotlib,我正在绘制一个简单的热图,它的值分布是倾斜的 import numpy as np import matplotlib.pyplot as plt import random import matplotlib size=100 data=np.array([[random.expovariate(1) for _ in range(size)] for _ in range(size)]) fig, ax=plt.subplots() heatmap=ax.pcolormesh(data,

我正在绘制一个简单的热图,它的值分布是倾斜的

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

size=100
data=np.array([[random.expovariate(1) for _ in range(size)] for _ in range(size)])
fig, ax=plt.subplots()
heatmap=ax.pcolormesh(data, cmap=matplotlib.cm.Reds)
fig.colorbar(heatmap)
如果我可以更改颜色缩放,使低于某个阈值的值为固定颜色(例如cmap中的最低颜色),并缩放所有其他值以显示更均匀的颜色分布(例如,使用某些参数的指数或幂重缩放),那就太好了


有没有一种简单的方法可以在不更改数据值的情况下重新缩放我的颜色贴图?

如果您对线性比例感到满意,有:

heatmap=ax.pcolormesh(data, cmap=matplotlib.cm.Reds, vmin=0, vmin=1)
现在颜色从0缩放到1

如果你想要一个非线性的颜色映射,这也是可能的。为了使它和相应的颜色栏正确,您需要跳过一些限制

被接受的答案应该给你食谱