【matplotlib】正确认识matplotlib布局来画图

发布时间 2023-07-17 10:45:22作者: 盛夏光年ltk

整体布局图

先来看看官方给的布局图
Parts of a Figure

名词解释

Figure fig = plt.figure()
即画布。画图的第一件事,就是创建一个画布figure,然后在这个画布上加各种元素。
Axes ax = fig.add_subplot(1,1,1)
首先,这个不是画图的xy坐标抽。可以把axes理解为你要放到画布上的各个物体。
如果figure只有一张图,那么就只有一个axes。如果你的figure有subplot,那么每一个subplot就是一个axes。axes下可以修改编辑的变量非常多,基本能包含你的所有需求。
Axis ax.xaxis/ax.yaxis
实际坐标轴。每个坐标轴实际上也是由竖线和数字组成的,每一个竖线其实也是一个axis的subplot,因此ax.xaxis也存在axes这个对象。对这个axes进行编辑就会修改xaxis图像上的表现。

图像各部位名词

Parts of a Figure

正确的画图方式

# 首先创建一块画布
# 这个function创建了一个大小为(14,7)的画布,把这个画布赋值给变量fig
# 同时在这个画布上创建了一个axes,把这个axes赋值给ax
# 这样,所有fig.xxx都是对这个画布的操作,所有ax.xxx都是对这个axes的操作
fig, ax = plt.subplots(figsize=(14,7))

画布

# 在画布上画图
# 注意,这里依然不使用plt!因为要在这个axes上画数据,因此就用ax.plot()来画
# 画完第一个再call一次,再画第二个
ax.plot(A,B)
ax.plot(B,A)

画图

细节处理

# 首先把标题和xy坐标轴的标题搞定。不用plt,直接在axes上进行设定
ax.set_title('Title',fontsize=18)
ax.set_xlabel('xlabel', fontsize=18,fontfamily = 'sans-serif',fontstyle='italic')
ax.set_ylabel('ylabel', fontsize='x-large',fontstyle='oblique')
ax.legend()
# 然后是xy坐标轴的一些属性设定, 也是在axes level上完成的
ax.set_aspect('equal') 
ax.minorticks_on() 
ax.set_xlim(0,16) 
ax.grid(which='minor', axis='both')
# 最后是坐标轴tick和细节,这个在axes.xaxis or axes.yaxis上完成
ax.xaxis.set_tick_params(rotation=45,labelsize=18,colors='w') 
start, end = ax.get_xlim() 
ax.xaxis.set_ticks(np.arange(start, end,1)) 
ax.yaxis.tick_right()

细节处理

参考

原文,刚开始使用时一样迷惑,感谢原博主解惑,特此记录
官方文档