专栏导读
✍ 作者简介:i阿极,CSDN Python领域新星创作者,专注于分享python领域知识。
✍ 本文录入于《数据分析之道》,本专栏针对大学生、初级数据分析工程师精心打造,对python基础知识点逐一击破,不断学习,提升自我。
✍ 订阅后,可以阅读《数据分析之道》中全部文章内容,包含python基础语法、数据结构和文件操作,科学计算,实现文件内容操作,实现数据可视化等等。
✍ 其他专栏:《数据分析案例》 ,《机器学习案例》
😊😊😊如果觉得文章不错或能帮助到你学习,可以点赞👍收藏📁评论📒+关注哦!👍👍👍📜📜📜如果有小伙伴需要数据集和学习交流,文章下方有交流学习区!一起学习进步!💪
1、前言
Matplotlib支持多种绘制多图的方法,其中最常用的是subplot和subplots函数。subplot函数可以将一个图像分成若干个小区域,并在其中绘制子图,而subplots函数可以一次性创建多个子图,并返回一个包含所有子图的数组对象。在绘制多图时,我们可以通过调整子图的排列方式、大小、间距等参数来满足不同的需求,从而使得图像更加美观、直观、易于理解。
2、subplot()函数
subplot 函数是 Matplotlib 库中用于创建子图的函数。它允许在一个图形窗口中创建多个子图,并指定子图的布局。
subplot 函数的语法如下:
subplot(nrows, ncols, index, **kwargs)
参数说明:
- nrows:表示子图布局的行数。
- ncols:表示子图布局的列数。
- index:表示当前子图在布局中的索引。索引从左上角开始,从左到右,从上到下递增。可以使用整数或元组 (row, col, index) 来指定索引。
- **kwargs:可选参数,用于设置子图的其他属性。
2.1创建一个包含 2x2 的子图布局,并在每个子图中绘制不同的图形
import matplotlib.pyplot as plt
import numpy as np
# 创建数据
x = np.linspace(0, 2*np.pi, 100)
y1 = np.sin(x)
y2 = np.cos(x)
y3 = np.tan(x)
y4 = np.exp(x)
# 创建子图布局
plt.subplot(2, 2, 1)
plt.plot(x, y1)
plt.title('Sin(x)')
plt.subplot(2, 2, 2)
plt.plot(x, y2)
plt.title('Cos(x)')
plt.subplot(2, 2, 3)
plt.plot(x, y3)
plt.title('Tan(x)')
plt.subplot(2, 2, 4)
plt.plot(x, y4)
plt.title('Exp(x)')
# 调整子图之间的间距
plt.tight_layout()
# 显示图形
plt.show()
我们创建了一个 2x2 的子图布局,共有四个子图。在每个子图中,我们使用 subplot 函数指定子图的位置,然后分别绘制了不同的图形。
2.2创建一个包含 1x3 的子图布局,并绘制三种不同类型的图形
import matplotlib.pyplot as plt
import numpy as np
# 创建数据
x = np.linspace(0, 10, 100)
y1 = np.sin(x)
y2 = np.exp(-x)
y3 = np.log(x)
# 创建子图布局
plt.subplot(1, 3, 1)
plt.plot(x, y1)
plt.title('Sin(x)')
plt.subplot(1, 3, 2)
plt.plot(x, y2)
plt.title('Exp(-x)')
plt.subplot(1, 3, 3)
plt.plot(x, y3)
plt.title('Log(x)')
# 调整子图之间的间距
plt.tight_layout()
# 显示图形
plt.show()
2.3创建一个包含 2 行 1 列的子图布局,绘制散点图和柱状图
import matplotlib.pyplot as plt
import numpy as np
# 创建数据
np.random.seed(0)
x = np.arange(1, 11)
y1 = np.random.randint(1, 10, size=10)
y2 = np.random.randint(1, 10, size=10)
# 创建子图布局
plt.subplot(2, 1, 1)
plt.scatter(x, y1, color='r')
plt.title('Scatter Plot')
plt.subplot(2, 1, 2)
plt.bar(x, y2, color='b')
plt.title('Bar Plot')
# 调整子图之间的间距
plt.tight_layout()
# 显示图形
plt.show()
我们创建了一个包含 2 行 1 列的子图布局,总共有两个子图。在第一个子图中,我们使用 scatter 函数绘制了散点图,展示了随机生成的点的分布。在第二个子图中,我们使用 bar 函数绘制了柱状图,展示了另一组随机生成的数据。
使用 subplot 函数指定子图的位置和布局,然后在每个子图中绘制了不同类型的图形。最后,使用 tight_layout 函数调整子图之间的间距,并通过 show 函数显示图形。
3、subplots()函数
subplots 函数是 Matplotlib 库中用于创建多个子图的函数。它可以方便地创建包含多个子图的图形窗口,并提供更灵活的子图布局选项。
subplots 函数的语法如下:
subplots(nrows=1, ncols=1, sharex=False, sharey=False, squeeze=True, **fig_kw)
参数说明:
- nrows:表示子图布局的行数,默认为 1。
- ncols:表示子图布局的列数,默认为 1。
- sharex:设置是否共享 x 轴刻度,默认为 False。
- sharey:设置是否共享 y 轴刻度,默认为 False。
- squeeze:设置是否自动压缩子图布局,默认为 True。
- **fig_kw:可选参数,用于设置图形窗口的其他属性。
3.1创建一个包含 2 行 2 列的子图布局,并在每个子图中绘制不同类型的图形
import matplotlib.pyplot as plt
import numpy as np
# 创建数据
x = np.linspace(0, 2*np.pi, 100)
y1 = np.sin(x)
y2 = np.cos(x)
y3 = np.tan(x)
y4 = np.exp(x)
# 创建子图布局
fig, axs = plt.subplots(2, 2, figsize=(8, 6))
# 子图1
axs[0, 0].plot(x, y1)
axs[0, 0].set_title('Sin(x)')
# 子图2
axs[0, 1].plot(x, y2)
axs[0, 1].set_title('Cos(x)')
# 子图3
axs[1, 0].plot(x, y3)
axs[1, 0].set_title('Tan(x)')
# 子图4
axs[1, 1].plot(x, y4)
axs[1, 1].set_title('Exp(x)')
# 调整子图之间的间距
plt.tight_layout()
# 显示图形
plt.show()
我们使用 subplots 函数创建了一个包含 2 行 2 列的子图布局,并返回了一个包含子图对象的数组 axs。在每个子图中,我们通过索引 axs[row, col] 访问子图对象,并在每个子图中绘制了不同类型的图形。
3.2创建一个包含 1 行 3 列的子图布局,绘制散点图和柱状图
import matplotlib.pyplot as plt
import numpy as np
# 创建数据
np.random.seed(0)
x = np.arange(1, 11)
y1 = np.random.randint(1, 10, size=10)
y2 = np.random.randint(1, 10, size=10)
# 创建子图布局
fig, axs = plt.subplots(1, 3, figsize=(12, 4))
# 子图1 - 散点图
axs[0].scatter(x, y1, color='r')
axs[0].set_title('Scatter Plot')
# 子图2 - 柱状图
axs[1].bar(x, y2, color='b')
axs[1].set_title('Bar Plot')
# 子图3 - 折线图
axs[2].plot(x, y1, color='g')
axs[2].plot(x, y2, color='m')
axs[2].set_title('Line Plot')
# 调整子图之间的间距
plt.tight_layout()
# 显示图形
plt.show()
3.3创建一个包含 2 行 2 列的子图布局,绘制多种不同的图形
import matplotlib.pyplot as plt
import numpy as np
# 创建数据
np.random.seed(0)
x = np.linspace(0, 5, 100)
y1 = np.sin(x)
y2 = np.cos(x)
y3 = np.tan(x)
y4 = np.exp(x)
# 创建子图布局
fig, axs = plt.subplots(2, 2, figsize=(10, 8))
# 子图1 - 折线图
axs[0, 0].plot(x, y1, color='r')
axs[0, 0].set_title('Sin(x)')
# 子图2 - 散点图
axs[0, 1].scatter(x, y2, color='g')
axs[0, 1].set_title('Cos(x)')
# 子图3 - 柱状图
axs[1, 0].bar(x, y3, color='b')
axs[1, 0].set_title('Tan(x)')
# 子图4 - 面积图
axs[1, 1].fill_between(x, 0, y4, color='m')
axs[1, 1].set_title('Exp(x)')
# 调整子图之间的间距
plt.tight_layout()
# 显示图形
plt.show()
4、random函数绘制多种不一样的子图
根据 random 函数生成随机数据,我们可以绘制多种不同的子图。下面是一个例子,展示了如何使用 random 函数创建多个子图。
import matplotlib.pyplot as plt
import numpy as np
# 生成随机数据
np.random.seed(0)
x = np.linspace(0, 10, 100)
y1 = np.random.rand(100)
y2 = np.random.randn(100)
y3 = np.random.randint(1, 10, 100)
# 创建子图
fig, axs = plt.subplots(2, 2, figsize=(10, 8))
# 子图1
axs[0, 0].plot(x, y1, color='r')
axs[0, 0].set_title('Random Numbers (0-1)')
# 子图2
axs[0, 1].scatter(x, y2, color='g')
axs[0, 1].set_title('Random Numbers (Normal Distribution)')
# 子图3
axs[1, 0].bar(x, y3, color='b')
axs[1, 0].set_title('Random Integers (1-10)')
# 子图4
axs[1, 1].hist(y1, bins=10, color='m')
axs[1, 1].set_title('Histogram of Random Numbers (0-1)')
# 调整子图之间的间距
plt.tight_layout()
# 显示图形
plt.show()
5、matplotlib相关图书推荐
5.1内容简介
在大数据时代背景下,统计学作为数据分析领域的基础,被应用于各行各业,其方法发挥着重要作用。为了更广泛地普及统计学知识,培养更多的统计学人才,本书应运而生。
作为入门级图书,本书内容安排如下。第1章从不确定性出发,讲述统计学和不确定性的关系,以及统计学中用于描述不确定性的各种概率模型。第2章是参数估计,系统讲述统计学中矩估计和极大似然估计两种常用的参数估计方法,并基于两种方法介绍各种常见概率分布中参数的点估计和区间估计。第3章是假设检验,首先从不确定性的角度探讨实际中的各种决策问题,帮助读者理解假设检验的思想和应用场景,然后系统介绍假设检验的方法论及各种常见推广。第4章是回归分析,首先介绍回归分析的思想和广泛的应用场景,然后系统地介绍各类常用模型,从线性回归到广义线性回归,最终落脚到两种机器学习算法(决策树、神经网络)。
本书特别强调实际应用,因此各个章节都辅以大量的实际案例,在介绍统计学基础知识的同时培养读者使用统计学方法解决实际问题的能力。
5.2作者简介
王汉生:北京大学光华管理学院商务统计与经济计量系教授,博导。国家杰出青年基金获得者,教育部长江学者特聘教授,美国统计学会(ASA)Fellow,国际统计协会(ISI) Elected Member。先后历任9个国际学术期刊副主编(Associate Editor)。在国内外各种专业杂志上发表文章100+篇,并合著有英文专著1本、中文教材4本。
王菲菲:中国人民大学统计学院副教授,硕士生导师。北京大学光华管理学院商务统计与经济计量系博士。研究兴趣为文本挖掘、网络结构数据分析、大规模数据的统计建模等。在国内外高水平期刊发表论文20余篇,曾多次获得中国人民大学教学类奖项。热衷案例创作,是微信公众号“狗熊会”精品案例系列的案例组长。
🎉本次送 3本书 ,评论区抽3位小伙伴送书
🎉活动时间:截止到 2023-05-15 14:00:00
🎉抽奖方式:利用爬虫进行随机抽奖。
🎉参与方式:关注博主、点赞、收藏,评论区评论 “我要学习Matplotlib!”
ps:一定要关注博主,不然中奖后将无效
🎉通知方式:通过动态与私信与本文最后同时公布
🎉获奖名单:
码银
山山而川442
好多漁
🎉感兴趣的小伙伴也可以访问下面的链接了解详情:
京东自营购买链接:https://item.jd.com/10069307972258.html
文章来源:https://www.toymoban.com/news/detail-442458.html
📢文章下方有交流学习区!一起学习进步!💪💪💪
📢首发CSDN博客,创作不易,如果觉得文章不错,可以点赞👍收藏📁评论📒
📢你的支持和鼓励是我创作的动力❗❗❗文章来源地址https://www.toymoban.com/news/detail-442458.html
到了这里,关于【数据分析之道-Matplotlib(三)】Matplotlib 绘制子图的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!