写在前面:
- import numpy as np
- import matplotlib.pylab as mp
- 因此文章中的np就代表numpy库,mp就代表pylab绘图库
一、坐标刻度定位器
1、步骤
1)创建:定位器对象 = mp.XXXLocator(…)
2)获得坐标轴:ax = mp.gca()
3)主刻度:ax.xaxis.set_major_locator(定位器对象) # 例如厘米
4)次刻度:ax.xaxis.set_minor_locator(定位器对象) # 例如毫米
2、各种定位器
- mp.NullLocator():无刻度
- mp.MaxNLocator(nbins=5, steps=[1,3,5,7,9]):最多5个等分刻度,分别是1,3,5,7,9
- mp.FixedLocator(locs=[0, 2.5, 5, 7.5, 10]):直接将刻度放上去
- mp.AutoLocator():自动刻度,不需要提供参数(方便)
- mp.IndexLocator(offset=0.5, base=1.5):索引定位器(好用),一参是偏移量,二参是间隔大小
- mp.MultipleLocator():(好用)默认参数为1,就是主刻度间隔,可以用数字设定参数;次刻度默认为主刻度/10
- mp.LinearLocator(numticks=21):线性定位器,参数为分成多少个等分,此处为21等分
- mp.LogLocator(base=2, subs=[1.0]):对数定位器,间距不断扩大,取2的-1次方,2的0次方,2的1次方,2的2次方……
3、练习代码
import numpy as np
import matplotlib.pylab as mp
mp.figure(facecolor="lightgray") # 创建窗口
# 存储定位器名称
locators=[
'mp.NullLocator()',
'mp.MaxNLocator(nbins=5, steps=[1,3,5,7,9])',
'mp.FixedLocator(locs=[0, 2.5, 5, 7.5, 10])',
'mp.AutoLocator()',
'mp.IndexLocator(offset=0.5, base=1.5)',
'mp.MultipleLocator()',
'mp.LinearLocator(numticks=21)',
'mp.LogLocator(base=2, subs=[1.0])',
]
n_locators = len(locators) # 获取定位器长度
# 遍历每一个定位器来创建子图
for i, locator in enumerate(locators):
mp.subplot(n_locators, 1, i+1) # 创建行数为定位器长度,列数为1,图号为i+1的子图
mp.xlim(0, 10) # 水平方向是从0到10
mp.ylim(-1, 1) # 垂直方向是-1到1
mp.yticks(()) # 隐藏y坐标轴
ax = mp.gca() # 获取坐标轴
ax.spines['left'].set_color("none") # 将左坐标轴透明
ax.spines['top'].set_color("none") # 将上坐标轴透明
ax.spines['