我在使用颜色条设置pcolormesh图时遇到了一些麻烦,该颜色条在颜色条上包含对数间隔的小刻度标记。
我最接近的是这样的:
import matplotlib
import matplotlib.pyplot as plt
import numpy as np
xbins = np.linspace(0, 1, 50)
ybins = np.linspace(0, 1, 50)
data = np.random.random((49,49))
fig, ax = plt.subplots()
im = ax.pcolormesh(xbins, ybins, data, norm=matplotlib.colors.LogNorm())
cb = fig.colorbar(im)
cb.ax.minorticks_on()
plt.savefig('test.png')
此解决方案的问题在于,次要刻度在日志空间中均匀分布:
我想设置绘图,所以我在线性空间中有均匀间隔的小刻度,这应该在该绘图上显示不均匀间距。
我知道我可以使用FixedFormatter
手动设置次要刻度标签,但如果可能的话,我不愿意这样做,因为我会自动制作大量的绘图。
答案 0 :(得分:3)
我认为自定义色条的最佳方式是' ticks是使用" ticks" fig.colorbar方法的参数,而不是试图修改包含colorbar的ax的属性。
from matplotlib.ticker import LogLocator
"..."
cb = fig.colorbar(im, ticks = LogLocator(subs=range(10)))
答案 1 :(得分:1)
为子孙后代添加:
从这个回答:@JoeKington https://stackoverflow.com/a/20079644/230468:
minorticks = p.norm(np.arange(1, 10, 2))
cb.ax.xaxis.set_ticks(minorticks, minor=True)
这很烦人,您必须手动创建刻度线位置,但它似乎有效。