python绘制子图(旭日图、渐变堆积面积图、多数据折线图、比例关系图)

      大家好,我是带我去滑雪!

      子图可以更清晰地展示和理解复杂的数据关系,通过将数据分成多个小图,有助于观察数据间的关系和趋势。减少数据之间的重叠和混淆,使得每个子图更易于理解和解释。不同类型的子图可以呈现数据的不同方面。例如,旭日图可以展示层次数据的结构,渐变堆积面积图可以显示时间序列数据的变化,多数据折线图可以比较多个数据集的趋势,比例关系图可以展示数据之间的相对比例关系。下面开始代码实战。

目录

(1)导入相关库与模块

(2)分别绘制子图

(3)保存图像到指定文件夹


(1)导入相关库与模块

import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd
import numpy as np# 设置中文字体和负号
plt.rcParams['font.sans-serif'] = ['KaiTi']
plt.rcParams['axes.unicode_minus'] = False

(2)分别绘制子图


plt.rcParams['font.sans-serif'] = ['KaiTi']
plt.rcParams['axes.unicode_minus'] = Falsedata1 = {'景区名称': ['荔波小七孔', '黄果树瀑布', '镇远古城', '梵净山', '安顺龙宫', '乌蒙大草原', '百里杜鹃', '千户苗寨'],'评分': [4.7, 4.5, 4.5, 4.4, 4.4, 4.4, 4.3, 4.2]
}data2 = {'年份': [2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023],'旅游人数': [4747.89, 6262.89, 8190.23, 10439.95, 12913.02, 17019.36, 21401.18, 26761.28, 32134.94, 37630.01, 53148.42, 74417.43, 96858.12, 113526.6, 61781.49, 64436.68, 49206.88, 63558.44],'旅游收入': [387.05, 512.28, 653.13, 805.23, 1061.23, 1429.48, 1860.16, 2370.65, 2895.98, 3512.82, 5027.54, 7116.81, 9471.03, 12318.86, 5785.09, 6642.16, 5245.64, 7404.56],'人数增长率': [53.21, 31.91, 30.77, 27.47, 23.69, 31.80, 25.75, 25.05, 20.08, 17.10, 41.24, 40.02, 30.16, 17.21, -45.58, 4.30, -23.64, 29.17],'旅游收入增长率': [59.39, 32.35, 27.49, 23.29, 31.79, 34.70, 30.13, 27.44, 22.16, 21.30, 43.12, 41.56, 33.08, 30.07, -53.04, 14.82, -21.03, 41.16]
}data3 = {'Year': [2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023],'人数增长率': [53.21, 31.91, 30.77, 27.47, 23.69, 31.80, 25.75, 25.05, 20.08, 17.10, 41.24, 40.02, 30.16, 17.21, -45.58, 4.30, -23.64, 29.17],'旅游收入增长率': [59.39, 32.35, 27.49, 23.29, 31.79, 34.70, 30.13, 27.44, 22.16, 21.30, 43.12, 41.56, 33.08, 30.07, -53.04, 14.82, -21.03, 41.16],'人均旅游收入增长率': [4.04, 0.34, -2.51, -3.28, 6.55, 2.20, 3.49, 1.92, 1.73, 3.59, 1.33, 1.10, 2.25, 10.97, -13.71, 10.08, 3.42, 9.28]
}data4 = {'评分': ['1', '2', '差评', '3', '中评', '4', '5', '好评'],'安顺龙宫比例': [5, 3, 8, 9, 0, 19, 63, 83],'大方百里杜鹃比例': [1, 1, 1, 8, 0, 21, 70, 91],'黄果树瀑布比例': [3, 2, 5, 4, 0, 13, 78, 91],'江口梵净山比例': [6, 2, 9, 6, 0, 15, 70, 85],'荔波小七孔比例': [1, 0, 1, 4, 0, 11, 84, 95],'乌蒙大草原比例': [1, 1, 2, 8, 0, 20, 70, 90],'西江千户苗寨比例': [7, 4, 11, 15, 0, 22, 52, 73],'镇远古城比例': [4, 2, 6, 8, 0, 21, 66, 87]
}df1 = pd.DataFrame(data1)
df2 = pd.DataFrame(data2)
df3 = pd.DataFrame(data3)
df4 = pd.DataFrame(data4)fig, axs = plt.subplots(2, 2, figsize=(16, 12),dpi=300)
axs[0, 0].set_title('景区评分旭日图', fontsize=18)colors = ['#ff4500', '#ff6347', '#ff7f50', '#ff8c00', '#ff4500', '#ff6347', '#ff7f50', '#ff8c00']
wedges, texts, autotexts = axs[0, 0].pie(df1['评分'], autopct='%1.1f%%', startangle=140, colors=colors, pctdistance=0.85, wedgeprops=dict(width=0.4, edgecolor='w'), labels=df1['景区名称'])axs[0, 0].axis('equal')centre_circle = plt.Circle((0,0),0.70,fc='white')
axs[0, 0].add_artist(centre_circle)for text, color in zip(texts, colors):text.set_color(color)text.set_fontsize(12)for autotext in autotexts:autotext.set_color('white')autotext.set_fontsize(18)for wedge in wedges:wedge.set_edgecolor('black')axs[0, 1].set_title('旅游数据渐变堆叠面积图', fontsize=18)
x = df2['年份'].astype(int)  # 将年份数据转换为整数
colors = plt.cm.viridis(np.linspace(0, 1, len(df2.columns) - 1))  # 使用viridis颜色映射
for i, col in enumerate(df2.columns[1:]):y = df2[col]axs[0, 1].fill_between(x, 0, y, alpha=0.7, color=colors[i], label=col)
axs[0, 1].legend(title='指标', loc='upper left')axs[0, 1].xaxis.set_major_locator(plt.MaxNLocator(integer=True))
axs[0, 1].set_xticks(x)  # 设置x轴刻度为年份axs[1, 0].set_title('增长率排序折线图', fontsize=18)
x = df3['Year'].astype(int)  # 将年份数据转换为整数
axs[1, 0].plot(x, df3['人数增长率'], marker='o', label='人数增长率', linestyle='-', color='blue')
axs[1, 0].plot(x, df3['旅游收入增长率'], marker='o', label='旅游收入增长率', linestyle='-', color='orange')
axs[1, 0].plot(x, df3['人均旅游收入增长率'], marker='o', label='人均旅游收入增长率', linestyle='-', color='green')
axs[1, 0].legend()axs[1, 0].xaxis.set_major_locator(plt.MaxNLocator(integer=True))
axs[1, 0].set_xticks(x)  # 设置x轴刻度为年份axs[1, 1].set_title('评分与各景点比例关系图', fontsize=18)
for column in df4.columns[1:]:axs[1, 1].plot(df4['评分'], df4[column], marker='o', label=column)
axs[1, 1].legend()

(3)保存图像到指定文件夹

plt.tight_layout()
plt.savefig('visualization.png', dpi=300, bbox_inches='tight')
plt.savefig(r'E:\工作\硕士\博客\博客86-python绘制子图\子图.png',bbox_inches ="tight",pad_inches = 1,transparent = True,facecolor ="w",edgecolor ='w',dpi=300,orientation ='landscape')

输出结果展示:

需要数据集的家人们可以去百度网盘(永久有效)获取:

链接:https://pan.baidu.com/s/173deLlgLYUz789M3KHYw-Q?pwd=0ly6
提取码:2138 


更多优质内容持续发布中,请移步主页查看。

博主的WeChat:TCB1736732074

   点赞+关注,下次不迷路!

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

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

相关文章

蓝鲸6.1 CMDB 事件推送的开源替代方案

本文来自腾讯蓝鲸智云社区用户:木讷大叔爱运维 背景 在蓝鲸社区“社区问答”帖子中发现这么一个需求: 究其原因,我在《不是CMDB筑高墙,运维需要一定的开发能力!》一文中已经介绍,在此我再简单重复下&#…

mysql知识点梳理

mysql知识点梳理 一、InnoDB引擎中的索引策略,了解过吗?二、一条 sql 执行过长的时间,你如何优化,从哪些方面入手?三、索引有哪几种类型?四、SQL 约束有哪几种呢?五、drop、delete、truncate的区…

勒索病毒最新变种.rmallox勒索病毒来袭,如何恢复受感染的数据?

导言: 随着信息技术的飞速发展,网络安全问题日益突出,其中勒索病毒便是近年来备受关注的网络安全威胁之一。在众多勒索病毒中,.rmallox勒索病毒以其独特的传播方式和强大的加密能力,给广大用户带来了极大的困扰。本文…

2024 批量下载公众号文章内容/阅读数/在看数/点赞数/留言数/粉丝数导出pdf文章备份(带留言):公众号混知近2000篇历史文章在线查看,找文章方便了

关于公众号文章批量下载,我之前写过很多文章: 视频更新版:批量下载公众号文章内容/话题/图片/封面/音频/视频,导出html,pdf,excel包含阅读数/点赞数/留言数 2021陶博士2006/caoz的梦呓/刘备我祖/六神读金…

大型语言模型(LLMs)面试常见问题解析

概述 这篇文章[1]是关于大型语言模型(LLMs)的面试问题和答案,旨在帮助读者准备相关职位的面试。 token? 在大型语言模型中,token 指的是什么? 分词(Tokenization):可以将…

IDEA/PyCharm/GoLand同时打开2个分支

背景 想对比2个分支的代码,或者在A分支开发时,需要看B分支,切来切去太麻烦,而且新写的代码还没法直接切到B分支。 操作方法 假如有A、B 2个分支。 通过git worktree为B分支新建1个worktree,然后通过打开新项目的方式…

list使用与模拟实现

目录 list使用 reverse sort unique splice list模拟实现 类与成员函数声明 节点类型的定义 非const正向迭代器的实现 list成员函数 构造函数 尾插 头插 头删 尾删 任意位置插入 任意位置删除 清空数据 析构函数 拷贝构造函数 赋值重载函数 const迭代器的…

【c++】初阶模版与STL简单介绍

🔥个人主页:Quitecoder 🔥专栏:c笔记仓 朋友们大家好,本篇文章介绍一下模版和对STL进行简单的介绍,后续我们进入对STL的学习! 目录 模版1.泛型编程2.函数模板2.1函数模板的原理2.2模版的实例化…

159 Linux C++ 通讯架构实战14,epoll 函数代码实战

ngx_epoll_init函数的调用 //(3.2)ngx_epoll_init函数的调用(要在子进程中执行) //四章,四节 project1.cpp:nginx中创建worker子进程; //nginx中创建worker子进程 //官方nginx ,一个…

深入解析Python的lxml库:高效处理XML和HTML的利器

更多Python学习内容:ipengtao.com Python中的lxml库是一个强大的XML和HTML处理库,它基于libxml2和libxslt库,提供了高效的XML解析和处理功能。本文将详细介绍lxml库的安装、特性、基本功能、高级功能、实际应用场景和总结,帮助读者…

phpstorm设置头部注释和自定义注释内容

先说设置位置: PhpStorm中文件、类、函数等注释的设置在:setting-》Editor-》FIle and Code Template-》Includes-》PHP Function Doc Comment下设置即可,其中方法的默认是这样的: /** ${PARAM_DOC} #if (${TYPE_HINT} ! "…

Linux第4课 Linux的基本操作

文章目录 Linux第4课 Linux的基本操作一、图形界面介绍二、终端界面介绍 Linux第4课 Linux的基本操作 一、图形界面介绍 本节以Ubuntu系统的GUI为例进行说明,Linux其他版本可自行网搜。 图形系统进入后,左侧黄框内为菜单栏,右侧为桌面&…

[HackMyVM]靶场Birthday

难度:Hard kali:192.168.56.104 靶机:192.168.56.149 端口扫描 ┌──(root㉿kali2)-[~/Desktop] └─# nmap 192.168.56.149 Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-04-06 10:39 CST Nmap scan report for 192.168.56.149 Host is up (0.00016s latency). N…

硬件-1、体系架构

cpu 处理器 arm处理器的七种工作模式 arm寄存器 两张图是一样的,r0---r12是通用寄存器。其他寄存器可参考图一,cpu架构。 程序状态寄存器psr(cpsr/spsr) 程序异常处理 理解示例 当使用swi(软中断指令)指令…

【VMware Workstation】启动虚拟机报错“此主机支持 AMD-V,但 AMD-V 处于禁用状态”

问题出现步骤: 打开虚拟机: 然后报错: “此主机支持 AMD-V,但 AMD-V 处于禁用状态。 如果已在 BIOS/固件设置中禁用 AMD-V,或主机自更改此设置后从未重新启动,则 AMD-V 可能被禁用。 (1) 确认 BIOS/固件设…

机器学习KNN最邻近分类算法

文章目录 1、KNN算法简介2、KNN算法实现2.1、调用scikit-learn库中KNN算法 3、使用scikit-learn库生成数据集3.1、自定义函数划分数据集3.2、使用scikit-learn库划分数据集 4、使用scikit-learn库对鸢尾花数据集进行分类5、什么是超参数5.1、实现寻找超参数5.2、使用scikit-lea…

Zabbix6 - Centos7部署Grafana可视化图形监控系统配置手册手册

Zabbix6 - Centos7部署Grafana可视化图形监控系统配置手册手册 概述: Grafana是一个开源的数据可视化和监控平台。其特点: 1)丰富的可视化显示插件,包括热图、折线图、饼图,表格等; 2)支持多数据…

【MySQL】增删改查操作(基础)

文章目录 1、新增操作(Create)1.1单行数据全列插入1.2多行数据指定列插入 2、查询操作(Retrieve)2.1全列查询2.2指定列查询2.3指定列查询2.4别名(as)2.5去重(distinct)2.6排序&#…

机器学习实战18-机器学习中XGBClassifier分类器模型的应用实战,以及XGBClassifier分类器的调优策略

大家好,我是微学AI,今天给大家介绍一下机器学习实战18-机器学习中XGBClassifier分类器模型的应用实战,以及XGBClassifier分类器的调优策略。XGBClassifier是基于eXtreme Gradient Boosting (XGBoost)算法的分类器模型,在机器学习领…

[Semi-笔记]Switching Temporary Teachers for Semi-Supervised Semantic Segmentation

目录 概要创新一:Dual Temporary Teacher挑战:解决: 创新二:Implicit Consistency Learning(隐式一致性学习)挑战:解决: 实验结果小结论文地址代码地址 分享一篇2023年NeurIPS的文章…