Matplotlib,绘图上的对数色标,但颜色栏图例上的线性色标

2022-04-08 00:00:00 python matplotlib contour colorbar legend

问题描述

我想要按对数比例绘制,我已经使用:

plt.contourf(cube[0,:,:].data, levels=np.arange(0,6000,10), norm=mplc.LogNorm())
但我希望颜色栏仍然是线性比例...这可能吗?如果可能,我应该如何做到这一点?plt.colorbar()命令中的NORM关键字似乎无效。


解决方案

参见this answer on how to generate a colormap without an image。工作示例:

import matplotlib.pyplot as plt
import matplotlib.colors as mplc
import numpy as np
data = np.random.random((10,10))*6e3
my_cmap = plt.cm.coolwarm

# contour plot
plt.contourf(data, levels=np.arange(0,6000,10), cmap=my_cmap, norm=mplc.LogNorm())

# colorbar
sm = plt.cm.ScalarMappable(cmap=my_cmap, norm=plt.Normalize(vmin=0, vmax=6000))
sm._A = []
plt.colorbar(sm)

相关文章