【Matplotlib】刻度设置(2)
该模块包括许多类以⽀持完整的刻度位置和格式的配置。尽管 locators 与主刻度或⼩刻度没有关系,他们经由 Axis 类使⽤来⽀持主刻度和⼩刻度位置和格式设置。⼀般情况下,刻度位置和格式均已提供,通常也是最常⽤的形式。
默认格式
当x轴数据绘制在⼀个⼤间隔的⼀个⼩的集中区域时,默认的格式将会⽣效。为了减少刻度标注重叠的可能性,刻度被标注在固定间隔之间的空⽩区域。⽐如:
ax.plot(np.arange(2000, 2010), range(10))
表现形式如下:
刻度仅标注了0-9以及⼀个间隔+2e3。如果不希望这种形式,可以关闭默认格式设置中的间隔标注的使⽤。
<_xaxis().get_major_formatter().set_useOffset(False)
设置 rcParam axes.formatter.useoffset=False 以在全局上关闭,或者设置不同的格式。
刻度位置
Locator 类是所有刻度 Locators 的基类。 locators 负责根据数据的范围⾃动调整视觉间隔,以及刻度位置的选择。 MultipleLocator 是⼀种有⽤的半⾃动的刻度 Locator。你可以通过基类进⾏初始化设置等等。
Locator ⼦类定义如下:
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⽅法以根据数据的范围设置视觉间隔。
如果你想重写默认的locator,使⽤上⾯或常⽤的locator任何⼀个, 将其传给 x 或 y axis 对象。相关的⽅法如下:
matplotlib中subplot
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)如下:
设置指定位置的标注更改为其他的标注:
...
[r'$-\pi$', r'$-\pi/2$', r'$0$', r'$+\pi/2$', r'$+\pi$'])
[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)
id(True, which='major') #x坐标轴的⽹格使⽤主刻度
id(True, which='minor') #y坐标轴的⽹格使⽤次刻度
plt.show()
>>>>>>>>>>>###
图像形式如下:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。

发表评论