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

Rac*_*hel 5 python matplotlib legend contour colorbar

我想以对数比例绘制,我已经使用以下方法完成了:

plt.contourf(cube[0,:,:].data, levels=np.arange(0,6000,10), norm=mplc.LogNorm())
Run Code Online (Sandbox Code Playgroud)

但是我希望颜色条仍然是线性比例...这可能吗?如果可以的话我该怎么做?norm 关键字在命令中似乎无效plt.colorbar()

j08*_*lue 1

有关如何在没有图像的情况下生成颜色图的信息,请参阅此答案。一个工作示例:

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)
Run Code Online (Sandbox Code Playgroud)

对数轮廓线线性颜色条

  • 这个解决方案乍一看是正确的,但有一个大问题:颜色条上的抽动不再与图像中的值相对应。我将这种技术的作用与我的数据进行了比较,现在我有两个相同数据的图。一种使用对数颜色图绘制,另一种使用线性颜色图绘制。图中的像素具有不同的颜色,但颜色条相同。这意味着颜色条上的数字不显示颜色在图中表示的实际值。 (2认同)