Python可视化 | 使用matplotlib绘制面积图示例
面积图是数据可视化中的一个有效工具,用于说明时间上的关系和趋势。它们提供了一种全面的、视觉上迷人的方法,通过熟练地将折线图的可读性与填充区域的吸引力相结合来呈现数值数据。
在本文中,我们将学习更多关于在Python中创建面积折线图的知识。面积图为数据可视化提供了一个有价值的工具,提供了一种清晰而引人入胜的方式来传达随着时间的推移的趋势和关系。
什么是面积图?
面积线图,也称为面积图或堆积面积图,是一种数据可视化技术,用于表示随时间或跨类别的数据。它是基本折线图的扩展,当您想要显示整体的组成、沿着单个组件以及它们如何随时间或跨类别变化时,它特别有用。在本文中,我们将探索如何使用matplotlib库在Python中创建面积线图,并解释它们在可视化数据中的重要性。
以下是面积线图的关键组成部分和特征。
X轴:水平轴代表自变量,通常是时间或类别。它是一种连续或分类量表,为数据点提供背景。
Y轴:垂直轴表示因变量,通常是一个数值,用于度量您正在可视化的内容的数量或大小。
线:面积线图中的各条线表示不同的类别、组或构件。每一行从基线(通常是X轴)开始,向上显示该类别或组件在特定时间点或沿着类别轴的值。
区域填充:线条和基线之间的区域用颜色填充,使其在视觉上与众不同。该区域的颜色通常用于表示它所代表的类别或组件。
堆叠:在堆叠面积图中,每条线都堆叠在前一条线的顶部。这种叠加说明了总体如何随时间或跨类别变化,以及每个类别对整体的贡献。
创建面积图
首先,让我们使用Python制作一个基本的面积线图。为了创建图并显示各种类别如何随时间变化,我们将使用Matplotlib。
import pandas as pd
import matplotlib.pyplot as plt# Sample data
df = pd.DataFrame({'x': list(range(1, 11)),'y': [1, 3, 2, 4, 5, 7, 6, 8, 9, 10]
})# Create the area line plot
plt.fill_between(df['x'], df['y'], color='blue', alpha=0.2)
plt.plot(df['x'], df['y'], color='red', alpha=0.5, linewidth=0.9)plt.title("Area Line Plot")
plt.xlabel("X-axis")
plt.ylabel("Y-axis")
plt.show()

带标记和标签的面积图
添加更多功能,使其更具吸引力
- 导入必要的库:pandas用于数据操作,matplotlib.pyplot用于数据可视化。
- 准备示例数据:创建一个DataFrame,其中’x’和’y’列包含数值。
- 生成面积线图:使用plt.fill_between()创建半透明的蓝色面积线图,使用plt.plot()创建微弱的红色线。
- 使用标记和标签增强图:使用plt.scatter()在数据点处添加红色圆形标记(s=30)。使用plt.text()在每个数据点上方添加黑色标签,将其水平居中(ha =‘center’)并在底部垂直对齐(va =‘bottom’)。自定义轴、添加标题并显示绘图。
import pandas as pd
import matplotlib.pyplot as plt# Sample data
df = pd.DataFrame({'x': list(range(1, 11)),'y': [1, 3, 2, 4, 5, 7, 6, 8, 9, 10]
})# Create the area line plot
plt.fill_between(df['x'], df['y'], color='blue', alpha=0.5)
plt.plot(df['x'], df['y'], color='red', alpha=0.1)# Add red markers at data points
plt.scatter(df['x'], df['y'], color='red', s=30)# Add labels above data points
for i, row in df.iterrows():plt.text(row['x'], row['y'], str(row['y']), ha='center', va='bottom', color='black', size=10)plt.title("Area Line Plot with Markers and Labels")
plt.xlabel("X-axis")
plt.ylabel("Y-axis")
plt.show()

堆叠面积图
- 导入必要的库:pandas用于数据操作,matplotlib.pyplot用于数据可视化。
- 准备示例数据:创建一个DataFrame,其中包含“x”、“Category A”、“Category B”和“Category C”列,列中包含数值。
- 定义自定义颜色:定义要用于每个类别的颜色列表(“黄色”、“紫色”、“粉红色”)。
- 生成堆叠面积线图:使用plt.stackplot()创建具有定义的颜色和透明度的堆叠面积线图。此外,使用不同的颜色、线宽和透明度为每个类别绘制单独的线条。添加标签、自定义轴并显示绘图。
import pandas as pd
import matplotlib.pyplot as plt# Sample data
df = pd.DataFrame({'x': list(range(1, 11)),'Category A': [1, 3, 2, 4, 5, 7, 6, 8, 9, 10],'Category B': [2, 4, 3, 5, 6, 8, 7, 9, 10, 11],'Category C': [3, 5, 4, 6, 7, 9, 8, 10, 11, 12]
})# Define custom colors for each category
colors = ['yellow', 'purple', 'pink']# Create the stacked area line plot with custom colors
plt.stackplot(df['x'], df['Category A'], df['Category B'], df['Category C'], colors=colors, alpha=0.7)# Plot lines for each category with custom colors
plt.plot(df['x'], df['Category A'], color='blue', alpha=0.5, linewidth=0.9)
plt.plot(df['x'], df['Category B'], color='green', alpha=0.5, linewidth=0.9)
plt.plot(df['x'], df['Category C'], color='red', alpha=0.5, linewidth=0.9)plt.title("Stacked Area Line Plot with Custom Colors")
plt.xlabel("X-axis")
plt.ylabel("Y-axis")
plt.legend()
plt.show()

线间填充
- 导入必要的库:matplotlib.pyplot用于数据可视化,numpy用于数值运算。
- 准备样本数据:使用np.linspace生成x轴值,并使用sin和cos函数计算相应的y轴值。
- 创建绘图元素:使用plt.subplots()创建一个图形和轴,并使用ax.plot()绘制两条具有不同颜色和标签的线。
- 线间填充:使用ax.fill_between()以特定颜色和透明度填充线条之间的区域,并应用条件和插值。添加标签、自定义轴并显示绘图。
import matplotlib.pyplot as plt
import numpy as np# Sample data for demonstration
x = np.linspace(0, 10, 100)
y1 = np.sin(x)
y2 = np.cos(x)# Create a figure and axis
fig, ax = plt.subplots()# Plot the two lines
ax.plot(x, y1, label='Line 1', color='blue')
ax.plot(x, y2, label='Line 2', color='green')# Fill the area between the lines
ax.fill_between(x, y1, y2, where=(y1 > y2), interpolate=True, alpha=0.5, color='yellow', label='Fill Area')# Customize the plot
ax.set_xlabel('X-axis')
ax.set_ylabel('Y-axis')
ax.set_title('Filling Between Lines')
ax.legend()# Display the plot
plt.show()

总结
总而言之,面积图可有效显示数据随时间或跨类别的趋势、比较和部分与整体的关系。它们提供了一种视觉上引人注目的方式来理解不同的组件如何对整体做出贡献,以及这些贡献如何在选定的轴(时间或类别)上发生变化。
相关文章:
Python可视化 | 使用matplotlib绘制面积图示例
面积图是数据可视化中的一个有效工具,用于说明时间上的关系和趋势。它们提供了一种全面的、视觉上迷人的方法,通过熟练地将折线图的可读性与填充区域的吸引力相结合来呈现数值数据。 在本文中,我们将学习更多关于在Python中创建面积折线图的…...
【环境搭建】2.阿里云ECS服务器 安装MySQL
在阿里云的 Alibaba Cloud Linux 3.2104 LTS 64位系统上安装 MySQL 8,可以按照以下步骤进行: 1.更新系统软件包: 首先,更新系统软件包以确保所有软件包都是最新的: sudo yum update -y2.下载 MySQL 8 官方 Yum 仓库…...
Python Flask 入门开发
Python基础学习: Pyhton 语法基础Python 变量Python控制流Python 函数与类Python Exception处理Python 文件操作Python 日期与时间Python Socket的使用Python 模块Python 魔法方法与属性 Flask基础学习: Python中如何选择Web开发框架?Pyth…...
PostgreSQL查看当前锁信息
PostgreSQL查看当前锁信息 基础信息 OS版本:Red Hat Enterprise Linux Server release 7.9 (Maipo) DB版本:16.2 pg软件目录:/home/pg16/soft pg数据目录:/home/pg16/data 端口:5777查看当前锁信息的sql SELECT pg_s…...
毫米波雷达深度学习技术-1.6目标识别2
1.6.4 自动编码器和变体自动编码器 自编码器包括一个编码器神经网络,随后是一个解码器神经网络,其目的是在输出处重建输入数据。自动编码器的设计在网络中施加了一个瓶颈,它鼓励原始输入的压缩表示。通常,自编码器旨在利用数据中的…...
MineAdmin 前端打包后,访问速度慢原因及优化
前言:打包mineadmin-vue前端后,访问速度很慢,打开控制台,发现有一个index-xxx.js文件达7M,加载时间太长; 优化: 一:使用文件压缩(gzip压缩) 1、安装compre…...
使用Obfuscar 混淆WPF(Net6)程序
Obfuscar 是.Net 程序集的基本混淆器,它使用大量的重载将.Net程序集中的元数据(方法,属性、事件、字段、类型和命名空间的名称)重命名为最小集。详细使用方式参见:Obfuscar 在NetFramework框架进行的WPF程序的混淆比较…...
高中数学:数列-基础概念
一、什么是数列? 一般地,我们把按照确定的顺序排列的一列数称为数列,数列中的每一个数叫做这个数列的项,数列的第一项称为首项。 项数有限个的数列叫做有穷数列,项数无限个的数列叫做无穷数列。 二、一般形式 数列和…...
linux中dd命令以及如何测试读写速度
dd命令详解 dd命令是一个在Unix和类Unix系统中非常常用的命令行工具,它主要用于复制文件和转换文件数据。下面我会详细介绍一些dd命令的常见用法和功能: 基本语法 dd命令的基本语法如下: bash Copy Code dd [option]...主要选项和参数 if…...
centos官方yum源不可用 解决方案(随手记)
昨天用yum安装软件的时候,就报错了 [rootop01 ~]# yum install -y net-tools CentOS Stream 8 - AppStream 73 B/s | 38 B 00:00 Error: Failed to download metadata for repo appstream: Cannot prepare internal mirrorlis…...
langchian_aws模块学习
利用langchain_aws模块实现集成bedrock调用模型,测试源码 from langchain_aws.chat_models import ChatBedrock import jsondef invoke_with_text(model_id, message):llm ChatBedrock(model_idmodel_id, region_name"us-east-1")res llm.invoke(messa…...
归并排序-成绩输出-c++
注:摘自hetaobc-L13-4 【任务目标】 按学号从小到大依次输入n个人的成绩,按成绩从大到小输出每个人的学号,成绩相同时学号小的优先输出。 【输入】 输入第一行为一个整数,n,表示人数。(1 ≤ n ≤ 100000…...
✔️Vue基础+
✔️Vue基础 文章目录 ✔️Vue基础computed methods watchcomputed计算属性methods计算属性computed计算属性 VS methods方法计算属性的完整写法 watch侦听器(监视器)watch侦听器 Vue生命周期Vue生命周期钩子 工程化开发和脚手架脚手架Vue CLI 项目目录介…...
基于VS2022编译GDAL
下载GDAL源码;下载GDAL编译需要依赖的必须代码,proj,tiff,geotiff三个源码,proj需要依赖sqlite;使用cmake编译proj,tiff,geotiff;proj有版本号要求;使用cmake…...
C语言之字符函数总结(全部!),一篇记住所有的字符函数
前言 还在担心关于字符的库函数记不住吗?不用担心,这篇文章将为你全面整理所有的字符函数的用法。不用记忆,一次看完,随查随用。用多了自然就记住了 字符分类函数和字符转换函数 C语言中有一系列的函数是专门做字符分类和字符转换…...
vite常识性报错解决方案
1.导入路径不能以“.ts”扩展名结束。考虑改为导入“xxx.js” 原因:当你尝试从一个以 .ts 结尾的路径导入文件时,ESLint 可能会报告这个错误,因为它期望导入的是 JavaScript 文件(.js 或 .jsx)而不是 TypeScript 文件&…...
2024.06.08【读书笔记】丨生物信息学与功能基因组学(第十二章 全基因组和系统发育树 第四部分)【AI测试版】
读书笔记:《生物信息学与功能基因组学》第十二章 - 第四部分 目录 基因组测序的生物信息学工具 1.1 常用生物信息学软件介绍1.2 基因组数据的管理和分析 基因组序列的比较分析 2.1 基因组之间的相似性与差异性2.2 比较基因组学的应用 基因组学在医学和健康科学中…...
IO进程线程(八)线程
文章目录 一、线程(LWP)概念二、线程相关函数(一)创建 pthread_create1. 定义2. 使用(不传参)3. 使用(单个参数)4. 使用(多个参数)5. 多线程执行的顺序6. 多线程内存空间 ࿰…...
Linux基础指令网络管理003
本章主要讲述如何进行网络诊断。 操作系统: CentOS Stream 9 操作步骤: 操作指令 ping: 测试网络连接的连通性和延迟。 [rootlocalhost ~]# ping 192.168.80.111 PING 192.168.80.111 (192.168.80.111) 56(84) 比特的数据。 64 比特&a…...
在Android中使用 MQTT 服务实现消息通信
1.摘要 MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是一种轻量级的、基于发布/订阅(Publish/Subscribe)模式的通信协议,最初由 IBM 在1999年开发。它设计用于在低带宽、不稳定的网络环境下…...
BBDown终极指南:5分钟掌握B站视频本地化完整解决方案
BBDown终极指南:5分钟掌握B站视频本地化完整解决方案 【免费下载链接】BBDown Bilibili Downloader. 一个命令行式哔哩哔哩下载器. 项目地址: https://gitcode.com/gh_mirrors/bb/BBDown 在数字内容爆炸的时代,你是否曾为无法离线观看B站优质视频…...
Apollo Save Tool:3步解决PlayStation存档管理难题的终极方案
Apollo Save Tool:3步解决PlayStation存档管理难题的终极方案 【免费下载链接】apollo-ps4 Apollo Save Tool (PS4) 项目地址: https://gitcode.com/gh_mirrors/ap/apollo-ps4 你是否曾为丢失珍贵的游戏进度而懊恼?是否在主机升级时面临数百个存档…...
詹姆斯·韦伯望远镜:344个单点故障背后的航天工程极限挑战
1. 韦伯望远镜的“生死十日”:一场价值百亿美元的太空芭蕾作为一名在航天与深空探测领域摸爬滚打了十几年的工程师,我经历过无数次地面测试的紧张,也见证过发射倒计时的屏息瞬间。但像詹姆斯韦伯空间望远镜(JWST)这样&…...
HarnessGate:专为AI Agent设计的纯消息网关,实现多平台无缝桥接
1. 项目概述:一个纯粹的AI Agent消息网关如果你正在构建一个需要对接多个聊天平台(比如Telegram、Discord、Slack)的AI助手或客服机器人,你很可能已经踩过这样的坑:市面上主流的机器人框架,比如Botpress、L…...
综述篇 | 2015-2024,情绪识别(Emotion Recognition)技术演进与核心论文全景解读
1. 情绪识别技术演进全景图(2015-2024) 十年前,当研究人员试图通过摄像头分析人脸肌肉变化来判断情绪时,准确率还停留在60%左右。如今,结合多模态数据的情绪识别系统在特定场景下已突破90%准确率。这九年间的技术跃迁可…...
浏览器扩展革命:5分钟解锁微信网页版全功能访问
浏览器扩展革命:5分钟解锁微信网页版全功能访问 【免费下载链接】wechat-need-web 让微信网页版可用 / Allow the use of WeChat via webpage access 项目地址: https://gitcode.com/gh_mirrors/we/wechat-need-web 还在为微信网页版的各种限制而烦恼吗&…...
3步解锁游戏窗口任意分辨率:SRWE终极使用指南
3步解锁游戏窗口任意分辨率:SRWE终极使用指南 【免费下载链接】SRWE Simple Runtime Window Editor 项目地址: https://gitcode.com/gh_mirrors/sr/SRWE 你是否曾经遇到过这样的情况:想用游戏截图制作精美的壁纸,却发现游戏内置的分辨…...
告别月薪四千,2026网工转网安:学习路线、岗位方向与避坑全指南
告别月薪四千,2026 网工转网安:学习路线、岗位方向与避坑全指南 相信很多在做网络运维的朋友,搞了几年基础工作后,都会遇到这样的瓶颈:日常主要和交换机、路由器打交道,处理配置、排障这些重复内容&#x…...
跨境直播里,为什么很多团队设备很强,画面却依旧不稳定?
做跨境直播的人,基本都会经历一个阶段:疯狂升级设备。更贵的相机更强的显卡更高规格的采集卡更多灯光但实际开播后:直播依旧掉帧OBS 占用异常推流延迟增加画面偶发模糊音视频不同步很多时候,问题并不是设备性能不够。而是…...
Nevis‘22基准:评估持续学习模型的计算效率与知识迁移能力
1. 项目概述:为什么我们需要一个全新的终身学习基准?在计算机视觉乃至整个机器学习领域,我们正面临一个日益尖锐的矛盾:一方面,我们希望模型能够像人类一样,在漫长的时间里持续学习新知识,不断进…...
