gpt4 book ai didi

python - 在 matplotlib 2.0 中,如何将颜色条行为恢复为 matplotlib 1.5 的行为?

转载 作者:太空狗 更新时间:2023-10-30 01:05:39 31 4
gpt4 key购买 nike

我刚刚升级到 matplotlib 2.0,总的来说,我对新的默认设置非常满意。我想恢复到 1.5 行为的一件事是 plt.colorbar 的行为,特别是 yticks。在旧的 matplotlib 中,我的颜色条上只绘制了主要刻度;在新的 matplotlib 中,绘制了次要和主要刻度线,这是我不想要的。

下面显示了使用相同颜色图和对数刻度的 1.5 行为(左)和 2.0 行为(右)的比较。

A comparison of colorbar yticks

为了恢复到左侧显示的 1.5 行为,我需要在 matplotlibrc 中设置哪些默认值?如果无法使用 matplotlibrc 执行此操作,那么除了降级到 matplotlib 1.5 之外,还有哪些其他途径可用于全局更改此设置?

我曾尝试在每个 cbar = plt.colorbar(mesh) 实例之后简单地设置 cbar.ax.minorticks_off(),但这并不能解决问题.

最佳答案

只需将颜色条 locator 设置为 LogLocator 就足够了来自 matplotlib.ticker模块,然后调用 update_ticks()在颜色条实例上。

例如,考虑这个最小的示例,它生成您看到的带有小刻度的颜色条:

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

fig, ax = plt.subplots(1)

# Some random data in your range 1e-26 to 1e-19
data = 10**(-26. + 7. * np.random.rand(10, 10))

p = ax.imshow(data, norm=colors.LogNorm(vmin=1e-26, vmax=1e-19))

cb = fig.colorbar(p, ax=ax)

plt.show()

enter image description here

如果我们现在在调用 plt.show() 之前添加以下两行,我们将删除小刻度:

cb.locator = ticker.LogLocator()
cb.update_ticks()

enter image description here

或者,要实现相同的目的,您可以在创建颜色条时使用 ticks kwarg,并将其设置为 LogLocator()

cb = fig.colorbar(p, ax=ax, ticks=ticker.LogLocator())

关于python - 在 matplotlib 2.0 中,如何将颜色条行为恢复为 matplotlib 1.5 的行为?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43211922/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com