Matplotlib计算首次创建一个最佳数量的刻度和标签,以便标签字符串不会覆盖另一个刻度标签。是否可以在resize事件上最佳地修改此滴答数?如果数字大小增加,那么可能有机会获得更多的标记和标签。如果数字尺寸减小,则每当他们透支其他标签时,应减少刻度数。
您可以使用resize_event
来更改刻度数。此示例使用MaxNLocator
但您可以使用不同的Locator
。随着窗口宽度的增加,它会使得刻度数增加:
import matplotlib.pyplot as plt
import matplotlib.ticker as ticker
import numpy as np
fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot(np.random.rand(100), 'o')
def onresize(event):
bbox = fig.get_window_extent().transformed(fig.dpi_scale_trans.inverted())
width, height = bbox.width * fig.dpi, bbox.height * fig.dpi
tick_step = 100
n = width / tick_step
ax.xaxis.set_major_locator(ticker.MaxNLocator(n))
fig.canvas.mpl_connect('resize_event', onresize)
plt.show()