对于我喜欢使用的字体大小,我发现在matplotlib的几乎每个轴上,5个刻度是最视觉上令人愉悦的刻度数。我还喜欢沿着x轴修剪最小的刻度,以避免重叠刻度标签。因此,对于几乎每一个情节,我发现自己使用以下代码。
from matplotlib import pyplot as plt
from matplotlib.ticker import MaxNLocator
plt.imshow( np.random.random(100,100) )
plt.gca().xaxis.set_major_locator( MaxNLocator(nbins = 7, prune = 'lower') )
plt.gca().yaxis.set_major_locator( MaxNLocator(nbins = 6) )
cbar = plt.colorbar()
cbar.locator = MaxNLocator( nbins = 6)
plt.show()
是否有一个rc设置,我可以使用,使默认定位器为我的x轴,y轴,和colorbar是默认的上述MaxNLocator与修剪选项的x轴?
3条答案
按热度按时间bnl4lu3b1#
为什么不编写一个自定义模块
myplotlib
来设置这些默认值呢?全局rc设置可能会破坏依赖于这些设置的其他应用程序。
t0ybt7op2#
matplotlib.ticker.MaxNLocator
类有一个属性,可用于设置默认值:例如,脚本开头的这一行将在axis对象每次使用
MaxNLocator
时创建5个刻度。然而,默认定位器是
matplotlib.ticker.AutoLocator
,基本上是用硬连接的参数调用MaxNLocator
,因此如果没有进一步的黑客攻击,上述内容将不会产生全局影响。要将默认定位器更改为
MaxNLocator
,我能找到的最好方法是使用自定义方法覆盖matplotlib.scale.LinearScale.set_default_locators_and_formatters
:这有一个很好的副作用,即能够为X和Y刻度指定不同的选项。
e0uiprwp3#
根据Anony-Mousse的建议
创建一个文件myplt.py
在代码或ipython会话中