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()

在这里插入图片描述

总结

总而言之,面积图可有效显示数据随时间或跨类别的趋势、比较和部分与整体的关系。它们提供了一种视觉上引人注目的方式来理解不同的组件如何对整体做出贡献,以及这些贡献如何在选定的轴(时间或类别)上发生变化。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

前端渲染大量数据思路【虚拟列表】【异步机制】

当浏览器遇到性能瓶颈导致页面卡顿时,你会怎么处理?如何查找问题的原因? 浏览器本身自带性能检测工具,通常我们分析由脚本导致的页面卡顿会选择 性能(performance) 选项卡,在其中我们可以找到导…

从诺曼底登陆八十周年说起

昨天(2024年6月6日)是诺曼底登陆(Normandy Campaign)八十周年纪念日。媒体上有很多对相关纪念活动的报道。 诺曼底登陆战役,是第二次世界大战也是世界战争史上规模最大的登陆战役。敦刻尔克大撤退后,西欧大…

Qt Window Dialog 无标题栏 ,无边框,可拖动

1.效果: 2. 主要实现步骤: 设置窗口 flag: this->setWindowFlags(Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint); 创建变量存储位置 QPoint m_dragPosition; 对鼠标左键按下和移动事件做处理 void DraggableDialog::mousePre…

【Linux操作系统】Linux中进程的五种状态:R、S、D、T、X以及僵尸进程、孤儿进程

操作系统中有许多同时执行的进程,这些进程都可能处于不同的状态代表着不同的含义。 R运行状态(running) 概念:并不意味着进程一定在运行中,它表明进程要么是在运行中要么在运行队列里。 我们运行可执行程序myproc利用指令 ps ajx可以看到进程…

Java 18 新功能概述

Java 18 在 2022 年 3 月 22 日正式发布,Java 18 不是一个长期支持版本。 包含多项新特性和改进,如文件系统链接、文本块、表达式求值API、ForkJoinPool优化、Optional新方法等。 亮点还包括预览特性:Record Pattern Matching for Switch和增…

Elastic Search(ES)Java 入门实操(3)数据同步

基本概念和数据查询代码: Elastic Search (ES)Java 入门实操(1)下载安装、概念-CSDN博客 Elastic Search(ES)Java 入门实操(2)搜索代码-CSDN博客 想要使用 ES 来查询数…

为什么会有虚像

本来我就打算写虚像相关的内容,实际上我看不懂光学的内容,我只是发觉书上没有使用变分法来做,而只是解析几何的变换,这个做法完全脱离实际,物理书为什么会这样写不知道原因,但是很明显这样的内容也非常的复…

操作系统复习-存储管理之段页式存储管理

存储管理之段页式存储管理 页式存储管理(等分划分) 字块是相对物理设备的定义页面则是相对逻辑空间的定义指的都是大小一样的一块内存页式存储管理是将进程逻辑空间等分成若干大小的页面相应的把物理内存空间分成与页面大小的物理块以页面为单位把进程空间装进物理内存中分散的…

【MySQL】常见可执行程序

本文使用的版本是MySQL8,5.7可能会有所不同。 MySQL提供了一些重要的程序用来管理和操作数据库。这里会介绍一些常用的程序及其使用。对于MySQL程序的使用,可以查看官方帮助手册来学习。 MySQL :: MySQL 8.0 Reference Manual :: 6 MySQL Programs 程序…

normalizing flows vs 直方图规定化

normalizing flows名字的由来 The base density P ( z ) P(z) P(z) is usually defined as a multivariate standard normal (i.e., with mean zero and identity covariance). Hence, the effect of each subsequent inverse layer is to gradually move or “flow” the da…

C# Maui 报错:程序“[15748] MauiApp1.exe”已退出,返回值为 2147942405 (0x80070005)

“MauiApp1.exe”(CoreCLR: DefaultDomain): 已加载“C:\Program Files\dotnet\shared\ Microsoft.NETCore.App\8.0.6\System.Private.CoreLib.dll”。 “MauiApp1.exe”(CoreCLR: clrhost): 已加载“E:\cDemo\MauiApp1\MauiApp1\bin\Debug\net8.0-windows10.0.19041.0\win10-x…

数智融通 创新发展|亚信科技携AntDB、Data OS与隐私计算产品,赋能企业高质量发展

5月21日,亚信科技在云端举办了一场别开生面的研讨会——“数智融通 创新发展”,聚焦企业数智化升级的前沿话题。资深产品经理和技术架构师们面对面深入交流,分享创新成果与实战案例,共同探索企业数智化转型的新路径。 图1&#xf…

重构某测试站点

一、计算校验值 校验值结果: 文件名称:培训用centos.rar,文件大小:1,335,759,953,MD5:534EC38CDA7DA2196C84AC8F6092514B,SHA1:FD35D86A27A007AE10872980C48653A110DF6067&#xf…

【Ardiuno】ESP32单片机初试点亮LED小灯

之前用的Ardiuno的主板做过一些简单的开发实验,按照相关说明还是很容易进行操作的。最近看了ESP32可以有wifi的功能,也就买来实验一下。 ESP32的主板开发环境安装,按照说明的安装下载程序总是报错,又上网搜索半天最后按照CSDN上某…

算法006:查找总价格为目标值的两个商品

. - 力扣(LeetCode). - 备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。https://leetcode.cn/problems/he-wei-sde-liang-ge-shu-zi-lcof/ 题干说的很复杂,简化一…

IDEA使用阿里通义灵码插件

在这个AI火热的时代,纯手工写代码已经有点out了,使用AI插件可以帮我们快速写代码,起码能省去写那些简单、重复性的代码,大大提高编码效率,在这里我推荐使用阿里的通义灵码 注册安装 安装注册好后,打开我们…

前端技术探索:从基础到进阶

前端技术作为现代Web开发中不可或缺的一部分,其重要性不言而喻。随着技术的快速发展,前端领域涌现出了许多经典且值得深入探索的技术和框架。本文将带您领略前端技术的魅力,从基础到进阶,一起探讨前端开发的精髓。 一、前端技术基…

【AI时代,生命修行】

今日分享📒,AI时代, 生命 与 修行: 不要用太多时间去工作,尤其是在人工智能时代。如果谁还在用传统的线性的费时间的这种努力的工作方式,只能说太落伍了。 我只说给同频的朋友们无关的人请划走。因为很多…

AddressSanitizer理论及实践:heap-use-after-free、free on not malloc()-ed address

AddressSanity:A Fast Address Sanity Checker 摘要 对于C和C 等编程语言,包括缓冲区溢出和堆内存的释放后重用等内存访问错误仍然是一个严重的问题。存在许多内存错误检测器,但大多数检测器要么运行缓慢,要么检测到的错误类型有…

AndroidStudio无法识别连接夜神模拟器

方法一(无法从根本上解决) ①进入夜神模拟器安装路径下的bin路径(安装路径可以带有中文路径) ②打开cmd窗口,输入以下代码(一定要打开模拟器) nox_adb.exe connect 127.0.0.1:62001 方法二(根本上解决) 原因:Android Studio的adb版本与夜神模拟器的adb版本不一致 ①打开And…