gpt4 book ai didi

python - Matplotlib:让 contourf 颜色标签以对数刻度和多个级别显示

转载 作者:行者123 更新时间:2023-11-28 19:03:44 28 4
gpt4 key购买 nike

我在创建填充等高线图时遇到了麻烦,该图具有对数颜色缩放比例以及比默认选择的颜色更多的颜色。我基本上是在尝试关注 this example但是在添加更多颜色时,但每当我添加更多颜色时,颜色栏上的数字就会消失(刻度仍然存在)。

我的基本代码是

import numpy as np
import matplotlib.pyplot as plt
from matplotlib import ticker
from matplotlib.colors import LogNorm

z = np.random.lognormal(mean=10, sigma=3, size=(10,10))

fig, ax = plt.subplots()
levels=np.logspace(np.log10(np.min(z)),np.log10(np.max(z)),100)
plot = ax.contourf(z, levels, norm=LogNorm())

cbar = fig.colorbar(plot)

plt.show()

我也试过

plot = ax.contourf(z, levels, locator=ticker.LogLocator())

但我得到了相同的结果。有刻度线,但颜色条上没有任何数字: enter image description here

此外,按照 Matplotlib 文档,它似乎是

plot = ax.contourf(z, 100, norm=LogNorm())

应该给我 101 个对数间隔的颜色级别,但它只是默认为正常数字。

最佳答案

事实证明,除了给绘图函数一个定位器之外,你还需要给颜色条一个定位器:

locator = ticker.LogLocator(base=10)
clb = plt.colorbar(plot, format='%.e', ticks=locator)

我没有使用 norm 参数,而是在绘图函数中也使用了定位器,尽管除了看起来更一致之外似乎没有什么不同。

plot = ax.contourf(z, levels, locator=locator)

enter image description here

作为旁注,较新版本的 matplotlib(至少 2.1.1)引入了 LogFormatterSciNotation 函数,该函数创建可用于 format 的格式化程序对象使用 10^x 种符号创建标签的参数。不幸的是,我使用的主要版本是 1.5.1,所以我需要使用上面的格式字符串。

关于python - Matplotlib:让 contourf 颜色标签以对数刻度和多个级别显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49583015/

28 4 0