该模块包括许多类以支持完整的刻度位置和格式的配置。尽管 locators 与主刻度或小刻度没有关系,他们经由 Axis 类使用来支持主刻度和小刻度位置和格式设置。通常状况下,刻度位置和格式均已提供,一般也是最经常使用的形式。html
当x轴数据绘制在一个大间隔的一个小的集中区域时,默认的格式将会生效。为了减小刻度标注重叠的可能性,刻度被标注在固定间隔之间的空白区域。好比:python
ax.plot(np.arange(2000, 2010), range(10))
表现形式以下:api
刻度仅标注了 0-9
以及一个间隔 +2e3
。若是不但愿这种形式,能够关闭默认格式设置中的间隔标注的使用。ide
ax.get_xaxis().get_major_formatter().set_useOffset(False)
设置 rcParam axes.formatter.useoffset=False 以在全局上关闭,或者设置不一样的格式。spa
Locator 类是全部刻度 Locators 的基类。 locators 负责根据数据的范围自动调整视觉间隔,以及刻度位置的选择。 MultipleLocator 是一种有用的半自动的刻度 Locator。 你能够经过基类进行初始化设置等等。code
Locator 子类定义以下:orm
NullLocator | No ticks |
---|---|
FixedLocator | Tick locations are fixed |
IndexLocator | locator for index plots (e.g., where x = range(len(y))) |
LinearLocator | evenly spaced ticks from min to max |
LogLocator | logarithmically ticks from min to max |
SymmetricalLogLocator | locator for use with with the symlog norm, works like the LogLocator for the part outside of the threshold and add 0 if inside the limits |
MultipleLocator | ticks and range are a multiple of base;either integer or float |
OldAutoLocator | choose a MultipleLocator and dyamically reassign it for intelligent ticking during navigation |
MaxNLocator | finds up to a max number of ticks at nice locations |
AutoLocator | MaxNLocator with simple defaults. This is the default tick locator for most plotting. |
AutoMinorLocator | locator for minor ticks when the axis is linear and the major ticks are uniformly spaced. It subdivides the major tick interval into a specified number of minor intervals, defaulting to 4 or 5 depending on the major interval. |
你能够继承 Locator 定义本身的 locator。 你必须重写 ___call__
方法,该方法返回位置的序列,你可能也想重写 autoscale
方法以根据数据的范围设置视觉间隔。htm
若是你想重写默认的locator,使用上面或经常使用的locator任何一个, 将其传给 x 或 y axis 对象。相关的方法以下:对象
ax.xaxis.set_major_locator( xmajorLocator ) ax.xaxis.set_minor_locator( xminorLocator ) ax.yaxis.set_major_locator( ymajorLocator ) ax.yaxis.set_minor_locator( yminorLocator )
刻度格式由 Formatter 继承来的类控制。 formatter仅仅做用于单个刻度值而且返回轴的字符串。
相关的子类请参考官方文档。继承
一样也能够经过重写 __all__
方法来继承 Formatter 基类以设定本身的 formatter。
为了控制主刻度或小刻度标注的格式,使用下面任一方法:
ax.xaxis.set_major_formatter( xmajorFormatter ) ax.xaxis.set_minor_formatter( xminorFormatter ) ax.yaxis.set_major_formatter( ymajorFormatter ) ax.yaxis.set_minor_formatter( yminorFormatter )
相关文档:
原型举例:
set_xticklabels(labels, fontdict=None, minor=False, **kwargs)
综合举例(1)以下:
设置指定位置的标注更改成其余的标注:
... plt.xticks([-np.pi, -np.pi/2, 0, np.pi/2, np.pi], [r'$-\pi$', r'$-\pi/2$', r'$0$', r'$+\pi/2$', r'$+\pi$']) plt.yticks([-1, 0, +1], [r'$-1$', r'$0$', r'$+1$']) ...
综合举例(2)以下:
设置坐标轴主刻度和次刻度。
#!/usr/bin/env python #-*- coding: utf-8 -*- #--------------------------------------------------- #演示MatPlotLib中设置坐标轴主刻度标签和次刻度标签. #对于次刻度显示,若是要使用默认设置只要matplotlib.pyplot.minorticks_on() #--------------------------------------------------- import numpy as np import matplotlib.pyplot as plt from matplotlib.ticker import MultipleLocator, FormatStrFormatter #--------------------------------------------------- xmajorLocator = MultipleLocator(20) #将x主刻度标签设置为20的倍数 xmajorFormatter = FormatStrFormatter('%5.1f') #设置x轴标签文本的格式 xminorLocator = MultipleLocator(5) #将x轴次刻度标签设置为5的倍数 ymajorLocator = MultipleLocator(0.5) #将y轴主刻度标签设置为0.5的倍数 ymajorFormatter = FormatStrFormatter('%1.1f') #设置y轴标签文本的格式 yminorLocator = MultipleLocator(0.1) #将此y轴次刻度标签设置为0.1的倍数 t = np.arange(0.0, 100.0, 1) s = np.sin(0.1*np.pi*t)*np.exp(-t*0.01) ax = plt.subplot(111) #注意:通常都在ax中设置,再也不plot中设置 plt.plot(t,s,'--r*') #设置主刻度标签的位置,标签文本的格式 ax.xaxis.set_major_locator(xmajorLocator) ax.xaxis.set_major_formatter(xmajorFormatter) ax.yaxis.set_major_locator(ymajorLocator) ax.yaxis.set_major_formatter(ymajorFormatter) #显示次刻度标签的位置,没有标签文本 ax.xaxis.set_minor_locator(xminorLocator) ax.yaxis.set_minor_locator(yminorLocator) ax.xaxis.grid(True, which='major') #x坐标轴的网格使用主刻度 ax.yaxis.grid(True, which='minor') #y坐标轴的网格使用次刻度 plt.show() ##########################################################
图像形式以下: