我在设置带有对数刻度小刻度标记的colorbar的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')
这种解决方案的问题在于小刻度在对数空间中均匀分布:
![enter image description here](https://istack.dev59.com/rvUAV.webp)
我想设置图表,使得小刻度在线性空间中均匀分布,这应该会在该图上呈现出不均匀的距离。
我知道可以使用
FixedFormatter
手动设置小刻度标签,但如果可能的话,我将不愿意这样做,因为我将自动生成大量图表。
cb.ax.set_yscale('log', xsubs=[2,3,4,5,6,7,8,9])
会产生这个图表:http://i.imgur.com/amCHR5j.png - ngoldbaumcb.ax.yaxis.set_minor_locator(matplotlib.ticker.MultipleLocator(base=0.1))
,但是也不起作用:http://i.imgur.com/wzlTIMx.png。看起来色标的y轴确实是线性的,范围从0到1。(我猜LogNorm()会这样做?) - ngoldbaum