每日掌握一个科研绘图|区域图·24-08-23

news2024/9/22 13:42:44

小罗碎碎念

为了方便大家获取对应的代码和源数据,从本期推文开始,我将把对应的文件上传至Github仓库,感兴趣的同学自行获取。

image-20240823093756733

仓库地址

https://github.com/Lxltxpku/Share


一、区域图

区域图是一种数据可视化工具,它通过在坐标轴上展示数据点并用颜色或阴影填充这些点下方的区域来表示数据的变化趋势。

这种图表类型特别适合展示随时间变化的数值变量,因为它不仅能够清晰地展示数据点的值,还能够直观地显示数据的波动范围和变化趋势。

在区域图中,X轴通常用来表示时间序列或有序的分类变量,而Y轴则用来展示对应的数值变量。通过将数据点按照X轴的顺序连接起来,形成一条折线,然后将这条折线下方的区域用颜色或阴影填充,可以更直观地展示数据的波动情况。


以比特币价格的演变过程为例,我们可以创建一个区域图来展示从2013年4月至2018年4月这段时间内比特币价格的变化。

代码演示

# Libraries
library(tidyverse) # 加载tidyverse包,提供数据整理和图形绘制功能
library(hrbrthemes) # 加载hrbrthemes包,提供一些美观的主题
library(plotly) # 加载plotly包,用于创建交互式图形
library(patchwork) # 加载patchwork包,用于组合多个图形
library(babynames) # 加载babynames包,用于处理婴儿名字数据
library(viridis) # 加载viridis包,提供一组连续的颜色调色板

# Load dataset from github
data <- read.table("https://raw.githubusercontent.com/holtzy/data_to_viz/master/Example_dataset/3_TwoNumOrdered.csv", header=T) # 从GitHub加载数据集
data$date <- as.Date(data$date) # 将数据集中的date列转换为日期格式

# plot
data %>%
  ggplot( aes(x=date, y=value)) + # 使用ggplot2创建图形,设置x轴为日期,y轴为数值
    geom_area(fill="#69b3a2", alpha=0.5) + # 添加面积图层,填充颜色为#69b3a2,透明度为0.5
    geom_line(color="#69b3a2") + # 添加折线图层,颜色为#69b3a2
    ggtitle("Evolution of Bitcoin price") + # 设置图形标题为"比特币价格演变"
    ylab("bitcoin price ($)") + # 设置y轴标签为"比特币价格(美元)"
    theme_minimal() # 使用最小化主题

image-20240823091753193

在这个区域图中,X轴表示时间,从2013年4月开始到2018年4月结束,而Y轴则表示比特币的价格。每个月的数据点通过直线段连接,形成一条折线,这条折线下方的区域则用特定的颜色填充,以突出显示价格的波动范围。

通过这样的区域图,我们可以很容易地看出比特币价格在这段时间内的总体趋势,比如是否有显著的上升或下降,以及价格波动的幅度。此外,区域图还可以帮助我们识别出一些关键的转折点或异常值,从而更好地理解比特币市场的动态。


二、用途

区域图用于展示数值变量的演变。有时,区域图因未优化数据墨比(data-ink ratio)而受到批评,数据墨比是一种数据可视化原则,它检查图表上没有无谓的墨迹使用。

确实,移除曲线下方的区域将得到一个传达相同信息的线形图。然而,在本人看来,区域图在展示演变方面做得非常好,填充区域使得模式更加明显。

区域图也可以用于展示多个变量的演变。最经典的方式是通过堆叠区域图,这将在另一部分讨论,但也可以使用小图表多重展示。


区域图的用途非常广泛,它不仅可以展示单个数值变量随时间的演变,还可以通过比较和堆叠的方式,同时展示多个变量的变化趋势。这种图表类型在数据分析和呈现中扮演着重要的角色,尤其是在需要强调数据变化模式和趋势时。

首先,区域图通过填充颜色或阴影,增强了数据点之间的视觉联系,使得数据的波动和趋势更加明显。这种视觉强化有助于观众快速识别数据的上升、下降或平稳阶段。例如,如果一个公司的季度收入数据显示在区域图中,观众可以一目了然地看出收入的增长或减少,以及增长或减少的幅度。

然而,区域图有时因为数据墨比不高而受到批评。数据墨比是爱德华·塔夫特提出的一个概念,它强调图表中的每一部分都应该传达信息,避免不必要的墨迹使用。在某些情况下,如果数据点之间的变化不是非常剧烈,或者观众更关注于数据点的精确值而非整体趋势,那么线形图可能是一个更简洁有效的选择。

尽管如此,区域图在展示多个变量的演变方面具有独特的优势。通过堆叠区域图,我们可以在一个图表中展示多个变量随时间的变化,并且这些变量的总和也可以清晰地呈现出来。例如,在市场研究中,堆叠区域图可以用来展示不同产品或服务在一段时间内的市场份额变化。

此外,区域图还可以通过小图表多重展示的方式来展示多个变量。这种方法通常用于展示不同类别或组别的数据,每个类别或组别都有自己的区域图,这些图表并排或堆叠显示,以便进行比较。


以下是一个示例,展示了几个婴儿名字在美国1880年至2015年间的频率演变。

# Load dataset from github
don <- babynames %>% # 从babynames包中加载数据集
  filter(name %in% c("Ashley", "Amanda", "Mary", "Deborah", "Dorothy", "Betty", "Helen", "Jennifer", "Shirley")) %>% # 筛选出指定的名字
  filter(sex=="F") # 筛选出女性名字

# Plot
don %>%
  ggplot( aes(x=year, y=n, group=name, fill=name)) + # 使用ggplot2创建图形,设置x轴为年份,y轴为名字出现的次数,按名字分组并填充颜色
    geom_area() + # 添加面积图层
    scale_fill_viridis(discrete = TRUE) + # 设置填充颜色为viridis调色板的离散颜色
    theme(legend.position="none") + # 移除图例
    ggtitle("Popularity of American names in the previous 30 years") + # 设置图形标题为"过去30年美国名字的流行度"
    theme_minimal() + # 使用最小化主题
    theme(
      legend.position="none", # 移除图例
      panel.spacing = unit(0, "lines"), # 设置面板间距为0
      strip.text.x = element_text(size = 8), # 设置分面标题字体大小为8
      plot.title = element_text(size=13) # 设置图形标题字体大小为13
    ) +
    facet_wrap(~name, scale="free_y") # 按名字分面,并允许每个分面的y轴范围自由调整

image-20240823092338207

在展示1880年至2015年间美国几个婴儿名字的频率演变时,区域图可以有效地展示这些名字的流行趋势。通过将每个名字的频率变化用不同的颜色或阴影填充,我们可以清晰地看到哪些名字在某些时期特别流行,哪些名字的使用频率随时间减少。

这种展示方式不仅提供了丰富的视觉信息,还帮助我们理解社会文化和命名习惯的演变。


三、变体

如果数据点的数量较少,建议用点来表示每个单独的观测值。这样做可以更准确地理解观测值是在何时进行的:

data %>%
  tail(10) %>% # 从数据集中取出最后10行数据
  ggplot( aes(x=date, y=value)) + # 使用ggplot2创建图形,设置x轴为日期,y轴为数值
    geom_line(color="#69b3a2") + # 添加折线图层,颜色为#69b3a2
    geom_point(color="#69b3a2", size=4) + # 添加点图层,颜色为#69b3a2,大小为4
    ggtitle("Cuting") + # 设置图形标题为"Cuting"
    ylab("bitcoin price ($)") + # 设置y轴标签为"比特币价格(美元)"
    theme_minimal() # 使用最小化主题

image-20240823092621322

注意,线条也用于在散点图中显示趋势。以下是一个示例,使用了平滑的条件均值并展示了其周围的置信区间:

ggplot(mpg, aes(displ, hwy)) + # 使用ggplot2创建图形,数据集为mpg,x轴为displ(发动机排量),y轴为hwy(高速公路上的燃油效率)
  geom_point() + # 添加散点图层,显示每个数据点的位置
  geom_smooth(color="#69b3a2") + # 添加平滑曲线图层,颜色为#69b3a2,用于展示数据的趋势
  theme_minimal() # 应用minimal主题,使图形具有更美观的外观

image-20240823092821258

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

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

相关文章

嵌入式人工智能ESP32(7-OLED显示中英文)

1、OLED显示英文 我们之前通过树莓派开发板做过OLED显示&#xff0c;这里就不再赘述OLED显示屏了。直接上接线图与代码。 &#xff08;1&#xff09;Adafruit Adafruit是一家成立于2005年的私营企业&#xff0c;主要业务是设计和制造开源电子硬件。Adafruit在美国设计和制造其…

全栈杂谈第一期:什么是计算机中的并发

什么是计算机中的并发 计算机中的“并发”是一个听起来很复杂的词汇&#xff0c;但我们可以把它简单理解为“同时做很多事情”。想象一下你正在做晚饭&#xff1a;你可以在等水烧开的时候切菜&#xff0c;还可以在等待炖汤时洗碗。尽管你只有一双手&#xff0c;但通过合理安排…

芋道cloud v2.2.0发布,支持模块选配,丢弃简易版

大家知道&#xff0c;芋道cloud拥有商城、CRM、ERP、微信相关等模块&#xff0c;很显然我们在日常开发中不可能一个项目同时拥有这么多模块。但是从gitee上获取代码的时候&#xff0c;只提供了简易版和完整版。简易版本只有最基础的功能&#xff0c;如果想要微信相关的模块&…

浅谈Llama3.1,从结构、训练过程、影响到数据合成

Llama3.1系列模型的开源&#xff0c;真让大模型格局大震&#xff0c;指标上堪比最好的闭源模型比如GPT 4o和Claude3.5&#xff0c;让开源追赶闭源成为现实。 这里给大家分享一篇俊林兄&#xff08;知乎张俊林&#xff09;的一篇解读&#xff0c;主要对LLaMA3.1的模型结构、训练…

RM双轴云台控制

RM机器人上最复杂的控制计构就是双轴云台了&#xff0c;赛场上的情况对双轴云台的控制稳定度与响应灵敏度双方面都提出了很高的要求&#xff0c;云台控制的好坏在一定程度上就能够代表一支队伍的实力。 双轴云台采用的控制算法依然是PID控制算法&#xff0c;关于PID控制算法的…

自动操作一键数据恢复/电子取证

对磁盘模拟扫描修复丢失数据的实验。 先挂载题目磁盘VHD。 Windows系统中打开磁盘管理&#xff0c;-操作&#xff0c;-附加VHD 可以看到已经加载出题目磁盘&#xff0c;接下来打开RStudio数据恢复软件&#xff0c;对其进行扫描。 操作找回丢失/被删除的数据 可以看到已经加载出…

Java入门:06.Java中的方法--进阶04

4方法递归 简而言之就是方法的自身调用。 也可以是方法组自身的调用 递归类似循环&#xff0c;可以实现功能的反复执行。在某些(算法)环境下&#xff0c;比使用循环更轻松。 递归的本质就是方法的不同调用&#xff0c;就会不同的产生栈帧压栈&#xff0c;栈空间有限&#xff…

一个可以搜索页面内超链接的HTML页面

页面效果如上&#xff0c;含有标题&#xff0c;搜索框和一些超链接&#xff0c;在搜索框输入一些文字可以在下方显示含有这些文字的超链接。这里的搜索不仅可以中文&#xff0c;还可以是英文&#xff0c;数字 HTML代码如下 <!DOCTYPE html> <html lang"en&qu…

笔记小结:《利用pytthon进行数据分析》之使用pandas和seaborn绘图

matplotlib实际上是一种比较低级的工具。要绘制一张图表&#xff0c;你组装一些基本组件就行&#xff1a;数据展示&#xff08;即图表类型&#xff1a;线型图、柱状图、盒形图、散布图、等值线图等&#xff09;、图例、标题、刻度标签以及其他注解型信息。 在pandas中&#xf…

polarctf靶场[CRYPTO]显而易见的密码、[CRYPTO]夏多的梦、[CRYPTO]再这么说话我揍你了、[CRYPTO]神秘组织M

[CRYPTO]显而易见的密码 考点&#xff1a;ntlm编码 打开文件&#xff0c;显示内容就是ntlm格式 ntlm解密 在线网站&#xff1a; https://www.cmd5.com/便可得到flag [CRYPTO]夏多的梦 根据题目提示可以猜测为夏多密码 考点&#xff1a;夏多密码 在线加密原理网站&#x…

如何使用ssm实现应急资源管理系统

TOC ssm074应急资源管理系统jsp 绪论 1.1 研究背景 当前社会各行业领域竞争压力非常大&#xff0c;随着当前时代的信息化&#xff0c;科学化发展&#xff0c;让社会各行业领域都争相使用新的信息技术&#xff0c;对行业内的各种相关数据进行科学化&#xff0c;规范化管理。…

WEB渗透Win提权篇-RDPFirewall

爆破RDP Hydra爆破RDP >hydra -l admin -P /root/Desktop/passwords -S 192.168.0.0 rdpNlbrute MSF开启 >run post/windows/manage/enable_rdp多用户登陆 Mimikatz设置允许多用户登录 >privilege::debug >ts::multirdprdpwrap GitHub - stascorp/rdpwrap: RD…

用5点结构标定3点结构的顺序

在行列可自由变换的条件下&#xff0c;5点结构有34个 (A,B)---6*30*2---(0,1)(1,0) 让A分别是5a1&#xff0c;2&#xff0c;…&#xff0c;34&#xff0c;让B全是0。当收敛误差为7e-4&#xff0c;收敛199次取迭代次数平均值&#xff0c;得到 迭代次数 搜索难度 1 3683.965 …

上市公司绿色企业识别数据集(2016-2023年)

数据来源&#xff1a;本数据来源于中国债券信息网和企业年报&#xff0c;参考张小可老师等&#xff08;2024&#xff09;做法&#xff0c;根据上市公司是否发行过绿色债券来认定绿色企业的身份。经过对2016-2023年间发行过绿色债券的企业进行人工统计后&#xff0c;共有164家被…

大模型提示词工程和落地思考

本文是一篇内部的个人分享&#xff08;已无敏感信息&#xff09; &#xff0c;目的是增加产品、开发同学对 LLM 的理解&#xff0c;以降低沟通中的阻力&#xff0c;更好推进落地。 以下经脱敏后的原文: 大模型并不神奇 很多人听到’大模型’这个词可能会觉得很神秘&#xff…

Spring Boot 集成 swagger 3.0 指南

Spring Boot 集成 swagger 3.0 指南 一、Swagger介绍1.springfox-swagger 22.SpringFox 3.0.0 发布 二、Spring Boot 集成 swagger 3.01. 添加Maven依赖2. 创建配置类配置Swagger2.1 创建SwaggerConfig 配置类2.1 创建TestInfoConfig信息配置类 3. 在你的Controller上添加swagg…

【深度学习与NLP】——最全环境配置总指南

目录 一、Anaconda 的环境准备 1.下载和安装 1.1. 下载 1.1.1. 官网下载 1.1.2. 镜像站下载&#xff08;官网下载速度慢可选&#xff09; 1.2. 安装 2. 环境配置 2.1 Windows 平台 2.2 MacOS 和 Linux 平台 3. 环境验证 3.1 Windows 平台 3.2 MacOS 和 Linux 平台 …

34集-35集 【完整版小白上手环境搭建】玩转ESP-ADF实现AIGC大模型对话功能-1-《MCU嵌入式AI开发笔记》

34集-35集 【完整版小白上手环境搭建】玩转ESP-ADF实现AIGC大模型对话功能-1-《MCU嵌入式AI开发笔记》 参考文档&#xff1a; 1、ESP32-S3-Korvo-2 V3.0的说明文档&#xff1a; https://espressif-docs.readthedocs-hosted.com/projects/esp-adf/zh-cn/latest/design-guide/d…

浪潮信息AIStation V5:一站式解决大模型挑战

7月9日&#xff0c;浪潮信息在济南“元脑中国行”巡展上隆重发布了AIStation V5升级版人工智能开发平台&#xff0c;该平台凭借全面的大模型流程支持能力&#xff0c;旨在为企业用户简化大模型构建与微调流程&#xff0c;提供标准化、安全可靠的推理服务&#xff0c;并通过优化…

[创业之路-142] :生产 - 产品名称、型号、物料编码、批次、产品结构、BOM单、SN序列号、SOP、版本、回溯等常见概念之间的相互的结构化关系。

目录 一、概念定义 1. 产品型号 2. 批次 3. 产品结构 4. 编码 5. 序列号 6. 版本 7. 物料编码 8. BOM单&#xff08;物料清单&#xff09; 9. 回溯 二、命名规则 2.1 产品型号命名规则 1、基本原则 2、命名要素 3、命名规则示例 4、注意事项 2.2 产品批次命名…