【Python】在同一图形中的绘制多个子图

news2025/4/11 15:35:22

1. 引言

有时我们需要并排绘制两个图形,这不仅是为了更好地利用空间,而且主要是因为为了更加直观地对比分析数据。其实在python中可以利用subplot来实现上述功能。

闲话少说,我们直接开始吧!

2. 准备工作

这里,我们不妨先来举个例子,比方说,我们正在分析一家出租车公司的出行分布,假设我们想知道在Manhattan Brooklyn的皮卡车的出行距离有什么不同。
首先让我们来加载数据集,这里将使用seaborn软件包中的一个样本数据集Taxis,我们可以使用load函数直接加载,如下:

import seaborn as sns
# Load dataset
df = sns.load_dataset('taxis')

加载后的结果如下:
在这里插入图片描述
接着,我们使用以下代码来挑选我们关注的Manhattan Brooklyn的样本数据,如下:

# Brooklyn travels
df_bklyn = df.query(' pickup_borough == "Brooklyn" ')
# Manhattan Travels
df_mhtn = df.query(' pickup_borough == "Manhattan" ')

3. 绘制

接着就是鉴定奇迹的时刻了。首先,我们要创建一个图形,并指示我们想要的行和列的数量(在下面的示例中,它是同一行上的两个图)。

# Creating a grid figure with matplotlib
fig, my_grid = plt.subplots(nrows=1, ncols=2, figsize=(18,8))

然后我们应该创建我们的子图,并使用切片表示法指示这些子图在网格中的位置。样例如下:

# Histograms
# Plot 1
g1 = sns.histplot(data=df_bklyn, x='distance', ax=my_grid[0])
# Title of the Plot 1
g1.set_title('Histogram of the travels beginning in Brooklyn')

# Plot 2
g2 = sns.histplot(data=df_mhtn, x='distance', ax=my_grid[1])
# Title of the Plot 2
g2.set_title('Histogram of the travels beginning in Manhattan');

结果如下:
在这里插入图片描述

4. 扩展

matplotlib的多个子图的绘制方法非常相似,但让我们观察下在对其进行编码时看看有什么不同。
首先来看一个一行三列的例子,如下:

# Creating a grid figure with matplotlib SINGLE ROW EXAMPLE
fig, (g1, g2, g3) = plt.subplots(nrows=1, ncols=3, figsize=(18,8))

但如果我们有多行,此时需要使用元组构成的列表,列表中的每一行表示一个元组。

# Creating a grid figure with matplotlib MULTIPLE ROWS EXAMPLE
fig, [(g1, g2, g3), (g4, g5, g6)] = plt.subplots(nrows=2, ncols=3, figsize=(18,8))

让我们看看距离纽约市4个不同社区的直方图的一个实际例子。请注意,这里不再需要使用ax参数。

# Creating a grid figure with matplotlib
fig, [(g1, g2), (g3, g4)] = plt.subplots(nrows=2, ncols=2, figsize=(18,8))
# Histograms
# Plot 1
g1.hist(data=df_bklyn, x='distance')
# Title of the Plot 1
g1.set_title('Histogram of the travels beginning in Brooklyn')
# Plot 2
g2.hist(data=df_mhtn, x='distance')
# Title of the Plot 2
g2.set_title('Histogram of the travels beginning in Manhattan')
# Plot 3
g3.hist(data=df_queens, x='distance')
# Title of the Plot 3
g3.set_title('Histogram of the travels beginning in Queens')
# Plot 4
g4.hist(data=df_bronx, x='distance')
# Title of the Plot 4
g4.set_title('Histogram of the travels beginning in Bronx');

运行结果如下:
在这里插入图片描述

5. 总结

帖子很短,但里面的技巧非常有用。在实际应用中,经常不得不回来重新思考如何做到这一点,特此记录,方便下次查看。最后希望这篇文章帮助初学者轻松地在同一个图形中绘制多个子图。

您学废了嘛?

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/631844.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JavaScript 教程---互联网文档计划

学习目标: 每天记录一章笔记 学习内容: JavaScript 教程---互联网文档计划 笔记时间: 2023-6-5 --- 2023-6-11 学习产出: 1.入门篇 1、JavaScript 的核心语法包含部分 基本语法标准库宿主API 基本语法:比如操作符…

代码随想录第57天

1.回文子串 暴力解法 两层for循环,遍历区间起始位置和终止位置,然后还需要一层遍历判断这个区间是不是回文 动态规划 动规五部曲: 确定dp数组(dp table)以及下标的含义 如果大家做了很多这种子序列相关的题目&…

基于html+css的图展示118

准备项目 项目开发工具 Visual Studio Code 1.44.2 版本: 1.44.2 提交: ff915844119ce9485abfe8aa9076ec76b5300ddd 日期: 2020-04-16T16:36:23.138Z Electron: 7.1.11 Chrome: 78.0.3904.130 Node.js: 12.8.1 V8: 7.8.279.23-electron.0 OS: Windows_NT x64 10.0.19044 项目…

ChatGPT对未来编程语言发展的影响与展望

目录 一、引言1.ChatGPT的介绍与背景介绍背景 2.编程语言发展的重要性和挑战重要性挑战 二、ChatGPT在编程领域的应用1.自然语言处理技术在编程中的应用现状2. ChatGPT作为编程辅助工具的潜力与优势 三、ChatGPT对编程语言发展的影响1. 创新编程模式的涌现2. 语言设计与交互方式…

【高危】GitLab CE/EE 16.0.0存在路径遍历漏洞(存在POC)

漏洞描述 GitLab 是一款基于Git的代码托管、版本控制、协作开发平台。 在 GitLab CE/EE 16.0.0版本中 ,在文件上传时未对filename参数进行安全过滤,导致存在路径遍历漏洞,若嵌套在五个组及以上的公共项目中存在附件时,未经身份验…

以ChatGPT辅助软件架构工作

以ChatGPT辅助软件架构工作 在目前技术瞬息万变的背景下,软件建构师需要持续探索并采纳新颖的工具和方式,以提升开发流程,增强效率,同时保障最后成品的品质。在此之中,人工智能(AI)已经演变为一…

大数据Doris(三十八):Spark Load 导入Hive数据

文章目录 Spark Load 导入Hive数据 一、Spark Load导入Hive非分区表数据 1、在node3hive客户端,准备向Hive表加载的数据 2、启动Hive,在Hive客户端创建Hive表并加载数据 3、在Doris中创建Hive外部表 4、创建Doris表 5、创建Spark Load导入任务 6…

Windows命令行查找并kill进程及常用批处理命令汇总

Windows命令行查找并kill进程及常用命令汇总 打开命令窗口 开始—->运行—->cmd,或者是 windowR 组合键,调出命令窗口。 cmd命令行杀死Windows进程方法 1、根据进程名称批量kill 1)、执行tasklist|more检索进程 2)、执…

React学习之路-目录结构

目录结构 node_modules — 存放项目依赖包 public — 存放网站的静态资源文件 favicon.icon — 网站偏爱图标index.html — 主页面(重要)logo192.png — logo图logo512 — logo图manifest.json — 应用加壳的配置文件robots.txt — 爬…

反馈放大电路与功率放大电路(模电速成)

目录 一、反馈放大电路 1、四种基本组态 2、按反馈信号的极性来分 3、相关参数计算 4、引入电压串联负反馈 5、反馈类型判断 6、深度负反馈 二、功率放大电路 1、功率放大电路基础 2、最大输出功率问题 一、反馈放大电路 1、四种基本组态 电压串联 、电压并联、电流串…

文件隐写 笔记汇总

隐 copy命令 作用:copy /b 文件名1文件名2…文件名N(空一个格 )合并后的文件名 想正常浏览文件,那么就可以把合并后的文件名字的文件格式保存为第一个文件的格式(也就是你想要正常浏览的那个文件格式) 详细命令:cmd copy命令 文件复制 注意:…

华为OD机试真题 JavaScript 实现【相同数字的积木游戏1】【2023Q2 100分】

一、题目描述 小华和小薇一起通过玩积木游戏学习数学。 他们有很多积木,每个积木块上都有一个数字,积木块上的数字可能相同。 小华随机拿一些积木挨着排成一排,请小薇找到这排积木中数字相同且所处位置最远的2块积木块,计算他们…

嵌入式面试求职分享(经典)

前言 本文会分享一些嵌入式软件岗位的秋招事宜,对所有流程都会有一个描述,事无巨细,希望可以帮到各位读者。 下面将自己的学习和秋招经验分享给大家,如有错误,欢迎大家指出,希望能够给迷茫的人带来帮助。 …

NRF52832的DFU

开发环境: Winsodw:10 nRF5_SDK:17.1.0 1 工具安装 1.1 gcc-arm-none-eabi Downloads | GNU Arm Embedded Toolchain Downloads – Arm Developer 下载“gcc-arm-none-eabi-10.3-2021.10-win32.exe”,接提示安装。注意安装完…

基于GPT的聊天机器人(未完待续)

入门小菜鸟,希望像做笔记记录自己学的东西,也希望能帮助到同样入门的人,更希望大佬们帮忙纠错啦~侵权立删。 目录 一、简单介绍与参考鸣谢 二、数据集介绍 三、数据预处理 1、重复标点符号表达 2、英文标点符号变为中文标点符号 3、繁…

1.Apollo部署-linux

一.官方文档 https://www.apolloconfig.com/#/zh/deployment/quick-start-docker 二.环境准备 1.MySql 5.6.51.单独服务器192.168.2.13 https://downloads.mysql.com/archives/installer/ 2.JDK 1.8.X https://www.oracle.com/java/technologies/downloads/ 三.Apollo部署…

BI-SQL丨日志清理

日志清理 在使用SQL Server的过程中,随着时间的变化,后台日志文件的体量也是在不断增加的。这样会使得数据库的性能下降,并且占用大量的磁盘空间。 而在我们日常运维过程中,偶尔会遇到数据库执行JOB的时候,报内存不足…

Qt6之vc调用Qt生成无ui的dll

Qt可以调用vc生成的dll,反之qt也可以提供生成的dll给其它语言来调用,比如VC、rust等。 一、qt生成dll 在Qt creator加持下已经很容易的生成DLL,如下: 1、新建,库,C Library; 2、类型&#xff…

d3dx9_43.dll是什么文件、d3dx9_43.dll缺失的解决方法

d3dx9_43.dll电脑文件中的dll文件,即动态链接库文件,若计算机中丢失了某个dll文件,就会导致某些软件和游戏等程序无法正常启动运行,并且导致电脑系统弹窗报错,其安装方法:1、打开浏览器输入“dll修复文件.s…

SpringCloud第三篇:GateWay服务网关

一、为什么需要服务网关: 1、什么是服务网关 传统的单体架构中只需要开放一个服务给客户端调用,但是微服务架构中是将一个系统拆分成多个微服务,如果没有网关,客户端只能在本地记录每个微服务的调用地址,当需要调用的…