1:Matplotlib绘图库概述
1: subplot()
函数向当前图像(figure
)添加一个子图(Axes
),并将该子图设为当前子图。或者将某子图设为当前子图。
2: pyplot.subplot()
其实是Figure.add_subplot()
的一个封装
3: 函数的定义签名为:matplotlib.pyplot.subplot(*args, **kwargs)
函数的调用签名为: subplot(nrows, ncols, index, **kwargs)
subplot(pos, **kwargs)
subplot(**kwargs)
subplot(ax)
4: 重点分析:通过subplot参数不同,来调整子图在整个画布中的不同位置
函数的参数为:
*args:定义子图的位置。int、 (int, int, index) 或 SubplotSpec, 默认值为(1, 1, 1)
*args由以下三种定义方式。
三个整数构成的三元组(nrows, ncols, index):首先构成一个nrows行和ncols列的网格,然后将子图添加到对应index索引位置。 index从1开始累计,1为左上角,依次向右递增. index也可以是是一个二元组,例如fig.add_subplot(3, 1, (1, 2))。
三位整数:每一位数字可以分解为单独的整数,因此,这种方法最好用于子图少于9个的情况(index最大只能为9)。比如plt.subplot(235)等价于plt.subplot(2, 3, 5)。
SubplotSpec对象:
函数的返回值为:axes.SubplotBase对象或 Axes的其他子类。
2:布局案例
2.1 :不规则布局
1:通常子区函数subplot()
用来完成等分画布的绘图展示的任务,如果在画布上需要进行非等分画布的图形展示时,我们可以多次调用函数subplot()
来完成非等分画布的绘图准备任务。
2:代码
import matplotlib.pyplot as plt
# 绘制1行2列子图中的第1个子图
plt.subplot(121,facecolor='r')
# 绘制2行2列子图中的第2个子图
plt.subplot(222,facecolor='g')
# 绘制2行2列子图中的第4个子图
plt.subplot(224,facecolor='b')
plt.show()
2.2 : 绘制bar图形
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec
plt.rcParams["font.sans-serif"] = ["SimHei"]
x_month = np.array(['1月', '2月', '3月', '4月', '5月', '6月'])
y_sales = np.array([2150, 1050, 1560, 1480, 1530, 1490])
# 创建画布和布局 num:图形名称 figsize(5,5) 长宽就是5
fig = plt.figure(num=1, figsize=(5, 5))
# 在画布上添加 :虚拟的gridspec网格规范 (3行3列)
gs = fig.add_gridspec(3, 3)
# 在画布上添加:子图 (子图位置第0行 和第1列 第2列 第3列交集)
ax_one = fig.add_subplot(gs[0, :])
# 第1个子图
ax_one.bar(x_month, y_sales, width=0.5, color='#3299CC')
ax_one.set_title('2022年上半年某品牌汽车的销售额(模拟数据)')
ax_one.set_ylabel('销售额(亿元)')
plt.show()
现在我们重点研究gs[args,args] 参数对于子图位置布局的控制
2.2.1: ax_one = fig.add_subplot(gs[0, :])
2.2.2
ax_one = fig.add_subplot(gs[1:, :-2])
ax_one = fig.add_subplot(gs[1:, :1])
ax_one = fig.add_subplot(gs[1:, 1:])
2.2.3
ax_one = fig.add_subplot(gs[:-1,:2])
ax_one = fig.add_subplot(gs[:2,:2])
3:参考文献
matplotlib之pyplot模块——添加一个子图(subplot)_mighty13的博客-CSDN博客_pyplot.subplot
matplotlib.pyplot的使用总结大全(入门加进阶) - 知乎
利用python进行数据分析—七、绘图与可视化—matplotlib与seaborn_哎呦-_-不错的博客-CSDN博客