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

news2024/11/17 20:20:00

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

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

目录

(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'] = False

data1 = {
    '景区名称': ['荔波小七孔', '黄果树瀑布', '镇远古城', '梵净山', '安顺龙宫', '乌蒙大草原', '百里杜鹃', '千户苗寨'],
    '评分': [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.coloradmin.cn/o/1574566.html

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

相关文章

房企如何驱动新“三驾马车”,穿越地产周期?

今年以来,房地产行业在不确定性的周期中,逐渐显露出部分确定性。 今年两会期间,住建部明确指出,构建发展新模式是破解房地产发展难题的治本之策,在新模式下今后拼的是高质量、新科技、好服务。可以说,国家…

医学图像处理 利用pytorch实现的可用于反传的Radon变换和逆变换

医学图像处理 利用pytorch实现的可用于反传的Radon变换和逆变换 前言代码实现思路实验结果 前言 Computed Tomography(CT,计算机断层成像)技术作为如今医学中重要的辅助诊断手段,也是医学图像研究的重要主题。如今,随…

前端三剑客 —— JavaScript (第一节)

目录 回顾内容 1.弹性布局 2.网格布局 JavaScript 概述 发展 浏览器 什么是Javascript JavaScript 能干什么 JavaScript需要的环境 JavaScript初体验 基本数据 JS书写方式 行内JS 页面JS 外部JS 1)创建外部JS文件 2)编写页面 对话框 警…

[C语言][数据结构][动态内存空间的开辟]顺序表的实现!

目录 零.必备知识 a.顺序表的底层是数组. b.数组在内存中是连续存放的. c.动态内存空间的开辟(malloc,calloc,realloc). 一.顺序表的定义与实现 1.1 顺序表的定义 1.2 顺序表的初始化 1.3 顺序表的销毁 1.4 顺序表容量的检查与调整(最关键的部分) 1.5 顺序表的尾插 1.…

【Flutter】Getx设计模式及Provider、Repository、Controller、View等

本文基于Getx 4,x 本本 1、引入 再次接触到Flutter项目,社区俨然很完善和活跃。pubs.dev 寻找状态管理的时候看到很熟悉的Getx时间,俨然发现Getx的版本已到是4.x版本,看到Getx的功能已经非常强大了,庞大的API俨然成为一种开发框架…

通俗易懂的理解 ADC(2)

理解什么是ADC 文章目录 1、通俗理解什么是ADC 2、什么是ADC 3、ADC的采样率 4、采样位数 5、采样精度 ADC实际没有这么的简单,深入了解需要去学各种寄存器之间如何协作,信号如何走通。这些概念在后面会有讲解。 1、通俗理解…

[mmu/cache]-MMU的地址翻译(Address translation)指令介绍

快速链接: 【精选】ARMv8/ARMv9架构入门到精通-[目录] 👈👈👈 Address translation system instructions AT指令的语法格式: 有了上面的语法格式后,就非常好理解armv8的MMU提供了14条AT指令了: MMU的地址…

[mmu/cache]-ARMV8的cache的维护指令介绍

快速链接: 【精选】ARMv8/ARMv9架构入门到精通-[目录] 👈👈👈 Armv8里定义的Cache的管理的操作有三种: 无效(Invalidate) 整个高速缓存或者某个高速缓存行。高速缓存上的数据会被丢弃。清除(Cl…

#{} 和 ${}区别

1、参数是Integer类型时候没区别(#是预编译SQL,$是即时SQL) 2、当参数是String类型时,就会出错了 (1)这是$的报错信息,因为我们的参数admin并没有加引号所以不满足字符串条件 (2)正确的SQL &am…

FJSP:美洲狮优化算法(Puma Optimizar Algorithm ,POA)求解柔性作业车间调度问题(FJSP),提供MATLAB代码

一、柔性作业车间调度问题 柔性作业车间调度问题(Flexible Job Shop Scheduling Problem,FJSP),是一种经典的组合优化问题。在FJSP问题中,有多个作业需要在多个机器上进行加工,每个作业由一系列工序组成&a…

用可视化案例讲Rust编程5.用泛型和特性实现自适配绘制和颜色设置

上一节我们讲了用泛型实现返回结果,这一节我们来讲讲在函数签名里面使用泛型来对输入参数进行自适配。 先看UML设计图: 好吧,看起来有点复杂,我们一个个来解释。 首先定义的是一个生成绘图元素需要的参数结构,并且定义个特性&am…

LeetCode-1483. 树节点的第 K 个祖先【树 深度优先搜索 广度优先搜索 设计 二分查找 动态规划】

LeetCode-1483. 树节点的第 K 个祖先【树 深度优先搜索 广度优先搜索 设计 二分查找 动态规划】 题目描述:解题思路一:暴力解法会超时!【一级一级往上跳,效率太低】解题思路二:倍增,利用二进制运算&#xf…

Python可视化之pandas

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 1.解决坐标轴刻度负号乱码2.解决中文乱码问题3.折线图Series.plot()&DataFrame.plot()4.条形图5.箱线图6.区域面积图(堆积折线图)7.散点…

UNITY实战进阶-BatchRendererGroup+Jobs+Burst+RVO2+GPUAnimation 实现万人团战(一)

研究思路:GPUAnimation把动画放入GPU中处理,BatchRendererGroup进行动态批量渲染处理,JobsBurst进行多线程处理逻辑(移动、攻击等),RVO2采用Jobs的寻路导航。 准备工作: Editor > Project S…

注意!今明两天广东等地仍有较强降雨

中央气象台监测显示 进入4月以来 我国江南、华南北部强降雨 接连而至 湖南、江西、浙江中南部 福建大部、广东中北部等地降雨量 较常年同期偏多1倍以上 上述地区部分国家观测站 日雨量突破4月历史极值 截至4月7日早晨 广东广州、惠州、清远 韶关、河源等地部分地区 …

填字母游戏【蓝桥杯】/博弈+dfs

填字母游戏 博弈dfs #include<iostream> #include<map> using namespace std; //要用map存储已经处理过的字符串不然会超时 map<string,int> m; //dfs返回的就是结果 int dfs(string s) {//剪枝if(m.find(s)!m.end()) return m[s];//找到LOL代表输了if(s.fi…

浅谈Redis和一些指令

浅浅谈一谈Redis的客户端 Redis客户端 Redis也是一个客户端/服务端结构的程序。 MySQL也是一个客户端/服务端结构的程序。 Redis的客户端也有多种形态 1.自带命令行客户端 redis-cli 2.图形化界面的客户端&#xff08;桌面程序&#xff0c;web程序&#xff09; 像这样的图形…

随机森林、AdaBoost 和 XGBoost 三者之间的主要区别

&#x1f349; CSDN 叶庭云&#xff1a;https://yetingyun.blog.csdn.net/ 集成学习是一种强大的机器学习范式&#xff0c;它通过构建并结合多个学习器来提高预测性能。其中&#xff0c;随机森林、AdaBoost 和 XGBoost 是集成学习领域中著名且广泛应用的方法。尽管这些方法共享…

C++ | Leetcode C++题解之第12题整数转罗马数字

题目&#xff1a; 题解&#xff1a; const string thousands[] {"", "M", "MM", "MMM"}; const string hundreds[] {"", "C", "CC", "CCC", "CD", "D", "DC&qu…

绕过断言的LFI-Assertion101

总结 getwebshell : 发现疑似LFI的地方 → 测试..过滤 → 尝试断言绕过 → 远程加载反弹shell → getwebshell 提 权 思 路 : suid文件发现 → aria2c远程下载ssh私钥覆盖/root/.ssh → ssh公钥登录提权 准备工作 启动VPN 获取攻击机IP → 192.168.45.218 启动靶机 获取目标…