这是我参与11月更文挑战的第17天,活动详情查看:2021最后一次更文挑战
复习回顾
我们在前面对matplotlib模块基本模块的认识,到对matplotlib.plot模块绘制折线图、柱状图饼图等,往期文章的内容快速查看
-
matplotlib 绘制折线图:介绍折线图相关属性进行汇总说明
-
matplotlib 绘制柱状图:介绍柱状图相关属性进行汇总说明
-
matplotlib 绘制直方图:介绍直方图相关属性进行汇总说明
-
matplotlib 绘制散点图:介绍散点图相关属性进行汇总说明
-
matplotlib 绘制等高线图:介绍等高线图相关属性进行汇总说明
-
matplotlib 绘制饼图: 介绍饼图相关属性进行汇总说明
在统计图表中,能详细地展现数据信息,往往我们都需要绘制多个子图帮助展示数据,pyplot.subplot()、Figure.add_subplot、pyplot.axes()等方法来绘制不同场景的子图
本期,我们将学习matplotlib绘制子图的方法,Let's go~
1. 子图介绍
我们之前在学习matplotlib模块底层时,都知道matplotlib模块主要分为脚本层、美工层、后端,其中在美工层中,我们对图表组成的元素包括:Figure->Axes->Axis
-
怎么才能在图表中放下其他的图表呢?
这个时候我们需要在Figure画布去添加Axes对象即可创建第二个图表。
-
matplotlib 模块提供绘制方法
- matplotlib模块提供了方法
方法 说明 matplotlib.pyplot.subplot() 将Axes添加到当前画布中 matplotlib.pyplot.subplots() 创建一个画布和子图 matplotlib.pyplot.subplot2grid() 利用网格的方式均匀划分不同部分 matplotlib.pyplot.axes() 将轴添加到当前画布并使其成为当前轴 matplotlib.pyplot.figure() 创建新画布 matplotlib.Figure.add_subplot() 向画布添加一个Axes对象作为子图 matplotlib.Figure.subplots() 向画布中添加一组子图 -
在matplotlib模块中,支持绘制子图的方法集中在pyplot和Figure类
-
matplotlib 模块中提供的子图的方法我们常用主要subplot()、subplots()和add_subplot()方法
2. 子图属性
在subplot()、subplots()和add_subplot()方法中会共用到如下属性。
-
设置子图背景色
- 关键字:facecolor或者fc
- 取值可选:
- 表示颜色的英文单词:如红色"red"
- 表示颜色单词的简称如:红色"r",黄色"y"
- RGB格式:十六进制格式如"#88c999";(r,g,b)元组形式
-
设置子图x/y轴标签
- 设置x轴关键字:xlabel
- 设置y轴关键字:ylabel
- 取值形式为:字符串
-
设置子图x/y轴比例
- 设置x轴比例关键字:xscale
- 设置y轴比例关键字:yscale
- 取值形式可选:{"linear", "log", "symlog", "logit", ...}
-
设置子图的宽高比:
- 关键字:box_aspect
- 取值形式为:浮点型
-
设置轴位置:
- 关键字:set_position
- 取值形式为:列表形式,[left, bottom, width, height]
3. 绘制子图步骤
- 导入matplotlib.pyplot模块和matplotlib.Figure模块
- 准备数据,可以使用numpy/pandas整理数据
- 调用子图方法创建子图
- 调用绘制图形方法折线图plot,pie,bar等
4.小试牛刀
我们使用pyplot.subplot()方法绘制子图
- 首先,我们使用np.random.randint()生成x,y轴数据
import numpy as np
x = np.random.randint(0,100,25)
y = np.random.randint(0,100,25)
复制代码
- 结合for循环调用方法pyplot.subplot()方法在画布上创建四个子图对象
import matplotlib.pyplot as plt
for i in range(1,5):
plt.subplot(2,2,i,fc="#88c999",xlabel="x label",ylabel="y label",title="subplot",aspect="auto")
复制代码
- 每个子图调用pyplot.bar()方法绘制柱状图
plt.bar(x,y)
复制代码
- 调用pyplot.tight_layout()方法调整每个子图展示画面
plt.tight_layout()
复制代码
- 最后绘制子图效果如下
总结
本次,我们对matplotlib 绘制子图方法和相关属性进行基本学习,关于子图的操作详细操作后续会继续展开。
以上是本期内容,欢迎大佬们点赞评论,下期见~