【数据分析之道-Matplotlib(三)】Matplotlib 绘制子图

在这里插入图片描述

专栏导读

✍ 作者简介: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

📢文章下方有交流学习区!一起学习进步!💪💪💪
📢首发CSDN博客,创作不易,如果觉得文章不错,可以点赞👍收藏📁评论📒
📢你的支持和鼓励是我创作的动力❗❗❗

  • 45
    点赞
  • 56
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 70
    评论
Python中的数据可视化工具非常丰富,其中最常用的之一就是matplotlibmatplotlib是一个强大且灵活的绘图库,可以用于绘制各种类型的图表和图形。 它具有简单易用的接口,可以轻松地创建线图、散点图、柱状图、饼图、雷达图、热图等各种常见的统计图表。通过使用不同的图表类型和样式,我们可以更好地展示数据的特征和趋势,以及进行数据分析和解释。 在实践中,我们可以通过matplotlib实现数据可视化。首先,我们需要安装并导入matplotlib库。然后,创建一个图形对象,添加各种元素(如标题、轴标签、图例等)来装饰图形。最后,使用不同的绘图函数(如plot、scatter、bar等)来绘制图形。 举个例子,我们可以使用matplotlib绘制一个简单的折线图,展示一段时间内某个指标的变化趋势。我们可以使用plot函数传入X轴和Y轴的数据,然后使用show函数将图形显示出来。通过修改各种参数,我们可以调整图形的样式和显示效果。 除了基本的绘图功能,matplotlib还提供了丰富的辅助函数和工具,帮助我们进行更高级的数据分析和可视化。例如,可以使用子图函数创建多个图形,并在一个画布上显示多个图表;可以使用颜色映射功能展示多维数据;可以使用交互式工具进行图像缩放、平移和标记。 总之,matplotlib是一个功能强大的数据可视化库,可以帮助我们更好地理解和解释数据。它提供了丰富的绘图功能和灵活的接口,使得我们可以轻松地创建各种类型的图表和图形。通过掌握matplotlib的使用,我们可以更好地展示和分析数据,从而做出准确的决策。若要了解更多关于python数据可视化之matplotlib的实践方法,可以访问pan.baidu.com网站,获取更多资料。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 70
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

i阿极

你的鼓励是我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值