Matplotlib入门[06]——figures,subplots,axes和ticks对象
参考:
- https://ailearning.apachecn.org/
- Matplotlib官网
- matplotlib xticks yticks
import matplotlib.pyplot as plt
figures,axes和ticks的关系
这些对象的关系可以用下图表示:
具体结构:
figure对象
figure
对象是最外层的绘图单位,默认是以 1
开始编号(MATLAB 风格,Figure 1, Figure 2, ...
),可以用 plt.figure()
产生一幅图像,除了默认参数外,可以指定的参数有:
num
- 编号figsize
- 图像大小dpi
- 分辨率facecolor
- 背景色edgecolor
- 边界颜色frameon
- 边框
这些属性也可以通过 Figure
对象的 set_xxx
方法来改变。
fig = plt.figure(num=1,figsize=(4,2),frameon=True)
fig.set_facecolor('pink')
plt.plot([1,2,3,4])
plt.show()
ticks对象
ticks 用来注释轴的内容,我们可以通过控制它的属性来决定在哪里显示轴、轴的内容是什么等等。
xticks()返回了两个对象,一个是刻标(locs),另一个是刻度标签
locs, labels = xticks()
# 显示x轴的刻标
xticks( arange(6) )
# 显示x轴的刻标以及对应的标签
xticks( arange(5), ('Tom', 'Dick', 'Harry', 'Sally', 'Sue') )
此外xticks()还可以传入matplotlib.text.Text类的属性来控制显示的样式
xticks( arange(12), calendar.month_name[1:13], rotation=17 )
如果不想显示ticks则可以可以传入空的参数如yticks([])
import numpy as np
import calendar
plt.plot([0,1,2,3])
plt.xticks( np.arange(5), ('Mon','Tue','Wed','Thur','Fri'), rotation=17 )
plt.show()
subplot和axes对象
subplot对象
subplot
主要是使用网格排列子图:
plt.subplot(2,1,1)
plt.xticks([]), plt.yticks([])
plt.text(0.5,0.5, 'subplot(2,1,1)',ha='center',va='center',size=24,alpha=.5)
plt.subplot(2,1,2)
plt.xticks([]), plt.yticks([])
plt.text(0.5,0.5, 'subplot(2,1,2)',ha='center',va='center',size=24,alpha=.5)
plt.show()
更高级的可以用gridspec
绘图:
import matplotlib.gridspec as gridspec
G = gridspec.GridSpec(3, 3)
axes_1 = plt.subplot(G[0, :])
plt.xticks([]), plt.yticks([])
plt.text(0.5,0.5, 'Axes 1',ha='center',va='center',size=24,alpha=.5)
axes_2 = plt.subplot(G[1,:-1])
plt.xticks([]), plt.yticks([])
plt.text(0.5,0.5, 'Axes 2',ha='center',va='center',size=24,alpha=.5)
axes_3 = plt.subplot(G[1:, -1])
plt.xticks([]), plt.yticks([])
plt.text(0.5,0.5, 'Axes 3',ha='center',va='center',size=24,alpha=.5)
axes_4 = plt.subplot(G[-1,0])
plt.xticks([]), plt.yticks([])
plt.text(0.5,0.5, 'Axes 4',ha='center',va='center',size=24,alpha=.5)
axes_5 = plt.subplot(G[-1,-2])
plt.xticks([]), plt.yticks([])
plt.text(0.5,0.5, 'Axes 5',ha='center',va='center',size=24,alpha=.5)
plt.show()
axes 对象
subplot
返回的是 Axes
对象,但是 Axes
对象相对于 subplot
返回的对象来说要更自由一点。Axes
对象可以放置在图像中的任意位置:
plt.axes([0.1,0.1,.8,.8])
plt.xticks([]), plt.yticks([])
plt.text(0.6,0.6, 'axes([0.1,0.1,.8,.8])',ha='center',va='center',size=20,alpha=.5)
plt.axes([0.2,0.2,.3,.3])
plt.xticks([]), plt.yticks([])
plt.text(0.5,0.5, 'axes([0.2,0.2,.3,.3])',ha='center',va='center',size=16,alpha=.5)
plt.show()
后面的 Axes
对象会覆盖前面的内容。