文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

python数据可视化玩转Matplotlib subplot子图操作,四个子图(一包四),三个子图,子图拉伸

2023-09-15 10:35

关注

目录

一、创建子图

1.1 下图是绘制的子图:

1.2 代码释义:

二、绘制子图

2.1 代码引入

2.2 图形绘制

三、子图布局

3.1 子图布局说明

四、子图大小

4.1 子图大小调整

五、子图间距

5.1 子图代码调整

六、子图位置

6.1 代码引入

6.2 完整代码

6.3 完整代码

总结




大锤爱编程的博客_CSDN博客-大数据,Go,数据分析领域博主

Matplotlib是一个流行的Python可视化库,它提供了许多功能来创建各种类型的图表。其中一个功能是子图,它允许您在单个图表中绘制多个图。

要创建子图,请使用plt.subplots()函数。该函数接受三个参数:行数、列数和子图编号。以下是一个简单的示例:

import matplotlib.pyplot as pltfig, axs = plt.subplots(2, 2)

这将创建一个2x2的网格,其中包含4个子图。每个子图都有一个唯一的编号,可以在axs数组中访问。例如,要访问第一个子图,请使用axs[0, 0]

以下是一个示例代码,用于绘制2x2网格,其中每个子图都随机放置一个图形:

import matplotlib.pyplot as pltimport numpy as np# 创建一个2x2的网格fig, axs = plt.subplots(2, 2)# 在每个子图中绘制一个图形for ax in axs.flat:    # 随机生成一些数据    x = np.random.rand(100)    y = np.random.rand(100)    # 绘制散点图    ax.scatter(x, y)# 显示图形plt.show()

1.1 下图是绘制的子图:

1.2 代码释义:

注释:

  • 导入必要的库:我们需要使用matplotlib和numpy库来生成散点图和随机数。
  • 创建一个2x2的网格:我们使用subplot()函数创建一个2x2的子图,该函数返回一个Figure对象fig和一个Axes对象数组axs,它包含四个子图,第一个参数2表示行数,第二个参数2表示列数。
  • 在每个子图中绘制一个图形:我们使用for循环遍历每个子图对象,对每个子图生成随机数据,使用scatter()函数在子图中绘制散点图。使用axs.flat将axs数组展平为一维,这样可以方便地遍历每个子图。
  • 随机生成一些数据:我们使用numpy库中的random模块来生成100个在[0,1)内的随机数作为横坐标和纵坐标。
  • 绘制散点图:我们使用子图对象ax的scatter()函数来绘制散点图,该函数接受横坐标和纵坐标作为参数,将它们绘制成散点图。
  • 显示图形:最后,我们调用plt.show()函数来显示所有子图。这将打开一个窗口,其中包含四个散点图子图。

2.1 代码引入

绘制子图与绘制普通图形非常相似。您可以使用子图的Axes对象上的任何Matplotlib绘图函数。例如,以下代码将在第一个子图中绘制一条线:

import matplotlib.pyplot as pltfig, axs = plt.subplots(2, 2)axs[0, 0].plot([1, 2, 3, 4], [1, 4, 2, 3])

要在所有子图中绘制相同的图形,请使用循环。以下代码将在所有子图中绘制一条线:

import matplotlib.pyplot as pltfig, axs = plt.subplots(2, 2)for ax in axs.flat:    ax.plot([1, 2, 3, 4], [1, 4, 2, 3])

2.2 图形绘制

下面是绘制的子图:

3.1 子图布局说明

默认情况下,plt.subplots()函数将子图放置在网格中,每个子图的大小相同。但是,您可以使用各种选项来更改子图的大小和位置。

4.1 子图大小调整

要更改子图的大小,请使用figsize参数。以下代码将创建一个2x2的网格,其中每个子图的大小为4x4英寸:

import matplotlib.pyplot as pltfig, axs = plt.subplots(2, 2, figsize=(4, 4))

5.1 子图代码调整

要更改子图之间的间距,请使用wspacehspace参数。这些参数控制子图之间的水平和垂直间距,以及子图与图表边缘的距离。以下代码将创建一个2x2的网格,其中每个子图的水平和垂直间距为0.5英寸:

import matplotlib.pyplot as pltfig, axs = plt.subplots(2, 2, figsize=(4, 4), wspace=0.5, hspace=0.5)

6.1 代码引入

默认情况下,子图将放置在网格中,但您也可以使用GridSpec对象来更改子图的位置。以下代码将创建一个网格,其中第一个子图占据整个第一行,而第二个子图占据第一行的后两列:

import matplotlib.gridspec as gridspecimport matplotlib.pyplot as pltfig = plt.figure()gs = gridspec.GridSpec(2, 2, width_ratios=[1, 2])ax1 = fig.add_subplot(gs[0, 0])ax2 = fig.add_subplot(gs[0, 1:])

6.2 完整代码

以下是一个完整的Python代码,演示如何使用GridSpec对象来更改子图的位置。该代码将创建一个2x2的网格,其中第一个子图占据整个第一行,而第二个子图占据第一行的后两列。

import matplotlib.gridspec as gridspecimport matplotlib.pyplot as pltimport numpy as np# 创建一个2x2的网格,第一个子图占据整个第一行,第二个子图占据第一行的后两列gs = gridspec.GridSpec(2, 2, width_ratios=[1, 2])ax1 = plt.subplot(gs[0, :])ax2 = plt.subplot(gs[1, 0])ax3 = plt.subplot(gs[1, 1])# 在第一个子图中绘制一个折线图x = np.linspace(0, 10, 100)y = np.sin(x)ax1.plot(x, y)# 在第二个子图中绘制一个散点图x = np.random.rand(100)y = np.random.rand(100)ax2.scatter(x, y)# 在第三个子图中绘制一个柱状图x = ['A', 'B', 'C', 'D']y = [3, 7, 1, 9]ax3.bar(x, y)# 显示图形plt.show()

下面是绘制的子图:

6.3 完整代码

示例1:使用GridSpec对象创建自定义子图布局

import matplotlib.pyplot as pltimport matplotlib.gridspec as gridspecfig = plt.figure()# 定义网格gs = gridspec.GridSpec(3, 3)# 创建子图1ax1 = fig.add_subplot(gs[0, :])ax1.set_title('Subplot 1')# 创建子图2ax2 = fig.add_subplot(gs[1, :2])ax2.set_title('Subplot 2')# 创建子图3ax3 = fig.add_subplot(gs[1:, 2])ax3.set_title('Subplot 3')# 创建子图4ax4 = fig.add_subplot(gs[2, :2])ax4.set_title('Subplot 4')# 添加图形fig.tight_layout()plt.show()

绘制出来的图片如下,可以看出来,符合实际需求。

子图是Matplotlib中强大的功能之一。使用plt.subplots()函数,您可以方便地创建多个子图,并使用Axes对象绘制各种图形。使用各种选项,例如figsizewspacehspace参数,以及GridSpec对象,可以更改子图的大小、位置和间距。

来源地址:https://blog.csdn.net/alike_u/article/details/130020211

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯