的matplotlib.ticker.MaxNLocator
類有可以使用的屬性設置默認值:
default_params = dict(nbins = 10,
steps = None,
trim = True,
integer = False,
symmetric = False,
prune = None)
例如,腳本開始處的這一行將每次創建5個刻度線MaxNLocator
由軸對象使用。
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蜱蟲。
我喜歡這個想法。就像繼承matplotlib的自定義類一樣?我不確定myplt.setmydefaults會是什麼樣子。 – ncRubert
其實不是一堂課。只是一個調用'plt.whatever'的方法我猜。 –