该类matplotlib.ticker.MaxNLocator
具有可用于设置默认值的属性:
default_params = dict(nbins = 10,
steps = None,
trim = True,
integer = False,
symmetric = False,
prune = None)
例如,脚本开头的这一行将在MaxNLocator
轴对象每次使用时创建 5 个刻度。
from matplotlib.ticker import *
MaxNLocator.default_params['nbins']=5
但是,默认定位器是matplotlib.ticker.AutoLocator
,基本上MaxNLocator
使用硬连线参数调用,因此如果没有进一步的黑客攻击,上述内容将不会产生全局影响。
要将默认定位器更改为MaxNLocator
,我能找到的最好方法是matplotlib.scale.LinearScale.set_default_locators_and_formatters
使用自定义方法覆盖:
import matplotlib.axis, matplotlib.scale
def set_my_locators_and_formatters(self, axis):
# choose the default locator and additional parameters
if isinstance(axis, matplotlib.axis.XAxis):
axis.set_major_locator(MaxNLocator(prune='lower'))
elif isinstance(axis, matplotlib.axis.YAxis):
axis.set_major_locator(MaxNLocator())
# copy & paste from the original method
axis.set_major_formatter(ScalarFormatter())
axis.set_minor_locator(NullLocator())
axis.set_minor_formatter(NullFormatter())
# override original method
matplotlib.scale.LinearScale.set_default_locators_and_formatters = set_my_locators_and_formatters
这具有很好的副作用,即能够为 X 和 Y 刻度指定不同的选项。