基于 ggdensity 包的等高线绘制

简介: 基于 ggdensity 包的等高线绘制

简介

科研过程中,需要绘制某个后验密度/其他的形状。在发表论文中常常使用等高线来满足该需求。例如:文献[1]中所给出的图:


今天小编主要学习下 ggdensity[2] 来绘制不同类型的等高线,以便今后查阅和使用。并在此基础上,简单学习了另一种方式(ggblanket[3] 包)构建等高线。全文使用 [ggsci]((https://nanx.me/ggsci/ "ggsci")) 来修改配色。

主要参考的资料有1[4]2[5]

教程

数据介绍

本文使用常用数据集 iris 来作为例子。该数据集的前 6 行数据如下所示:



使用的 R 包包括:

library(ggdensity)
library(ggblanket)
library(ggsci)

版本一

使用 geom_hdr() 绘制等高线,配合 facet_wrap() 分面和 ggsci 包中的 scale_fill_aaas()修改配色方案。这是最简单的版本,其实大体上已经符合我的需求了。接下来展示在此基础上的一些调整,供大家以后参考使用。

ggplot(iris,aes(x = Sepal.Width, y = Sepal.Length, fill = Species)) +
  geom_hdr() + 
  scale_fill_aaas() +
  facet_wrap(vars(Species))


版本二

为了说明各个点的位置,可以直接在原来基础上增加代码:geom_point(shape = 21)

# 增加点
ggplot(iris,aes(x = Sepal.Width, y = Sepal.Length, fill = Species)) +
  geom_hdr() + 
  geom_point(shape = 21) +
  scale_fill_aaas() +
  facet_wrap(vars(Species))



版本三

使用 geom_hdr_lines() 配合 geom_point(),得到等高线(没有填充)和对应点。当然如果你觉得点的颜色太花了,可以在geom_point() 设置 color = "black"

ggplot(iris,aes(x = Sepal.Width, y = Sepal.Length, color = Species)) +
  geom_hdr_lines() +
  geom_point() +
  scale_color_aaas() +
  facet_wrap(vars(Species))



         

版本四

在原来的基础上,使用 geom_hdr_rug() 加入地毯。

ggplot(iris,aes(x = Sepal.Width, y = Sepal.Length, fill = Species)) +
  ggdensity::geom_hdr() + 
  geom_point(shape = 21) +
  scale_fill_aaas() +
  facet_wrap(vars(Species)) +
  geom_hdr_rug()


版本五

这里还可以使用 {ggblanket} 包绘制,该包集成了 ggplot 的语法,对新手使用更加方便。例如,iris 包绘制等高线可由以下代码实现。

iris |>
  gg_blank(
    x = Sepal.Width,
    y = Sepal.Length,
    col = Species,
    facet = Species,
    col_legend_place = "r") +
  ggdensity::geom_hdr(colour = NA) +
  labs(alpha = "Probs") +
  theme(legend.title = element_text(margin = margin(t = 5)))


小编有话说


  • 关于文章所提的文献中的图,本文并没有做复现工作,使用 geom_hdr_lines()factet_wrap(), geom_text()annotate() 基本就可以满足需求。

注意:本文的代码(.RMD)已经放到我的 GitHub 中(文末原文直达),有兴趣读者可以下载。此外,往期部分推文代码都已经公开,欢迎大家 Fork,star 使用。

d35ce1d83c61046d389c151196c5aef5.png

参考资料

[1]

文献: Fang, G. (2020). Multivariate Statistical Modeling and Analysis of Accelerated Degradation Testing Data for Reliability Prediction.

[2]

ggdensity: https://cloud.r-project.org/web/packages/ggdensity/index.html

[3]

ggblanket: https://davidhodge931.github.io/ggblanket/articles/ggblanket.html

[4]

1: https://jamesotto852.github.io/ggdensity/

[5]

2: https://davidhodge931.github.io/ggblanket/articles/ggblanket.html

目录
相关文章
|
负载均衡 算法 数据库连接
Go语言性能优化实践:案例分析与解决方案
【2月更文挑战第18天】本文将通过具体的案例分析,探讨Go语言性能优化的实践方法和解决方案。我们将分析几个典型的性能瓶颈问题,并详细介绍如何通过优化代码、调整并发模型、改进内存管理等方式来提升程序的性能。通过本文的学习,读者将能够掌握一些实用的Go语言性能优化技巧,为实际项目开发中的性能优化工作提供指导。
|
12月前
|
数据可视化 数据处理
CUT&Tag 数据处理和分析教程(9)
CUT&Tag 数据处理和分析教程(9)
556 15
CUT&Tag 数据处理和分析教程(9)
|
XML 缓存 JSON
Bpmn.js 进阶指南之原理分析与模块改造(上)
Bpmn.js 进阶指南之原理分析与模块改造
2911 1
|
存储 测试技术 数据库连接
Python代码结构
【7月更文挑战第16天】Python代码结构
497 2
|
机器学习/深度学习 Ubuntu Linux
在Linux中,如何按照该要求抓包:只过滤出访问http服务的,目标ip为192.168.0.111,一共抓1000个包,并且保存到1.cap文件中?
在Linux中,如何按照该要求抓包:只过滤出访问http服务的,目标ip为192.168.0.111,一共抓1000个包,并且保存到1.cap文件中?
|
前端开发 数据安全/隐私保护 开发者
vue3 组件级权限控制
vue3 组件级权限控制
284 1
inkscape
inkscape使用教程
907 1
|
存储 数据可视化 数据挖掘
利用Matplotlib实现地图可视化
【4月更文挑战第17天】使用Matplotlib结合GeoPandas和Basemap在Python中实现地图可视化。首先安装Matplotlib、GeoPandas和Basemap库。读取GeoJSON或Shapefile格式的地理数据,然后使用Basemap创建地图底图,绘制海岸线、国家边界和大陆湖泊。将GeoDataFrame数据转换后叠加到地图上,自定义地图样式和添加图例。利用颜色映射展示与地理位置相关的数值数据,创建颜色条。此外,可通过Folium实现交互式地图。通过学习和实践,提升地图可视化的技能。
1003 1
|
存储 安全 数据挖掘
性能30%↑|阿里云AnalyticDB X AMD EPYC,数据分析步入Next Level
阿里云原生数仓 AnalyticDB for PostgreSQL 与 AMD 新一代硬件深度优化,结合全自研计算引擎及行列混合存储实现性能升级,综合性能提升30%。结合丰富的企业级能力帮助企业构建离在线一体、流批一体综合数据分析平台,采用同一引擎即可满足离线批处理、流式加工,交互式分析三种场景,在开发运维、时效性及成本上具备更高的性价比。
891 0
|
弹性计算
阿里云服务器开放全部端口怎么打开?
阿里云服务器开放全部端口怎么打开?阿里云服务器端口怎么全部打开?在安全组中开启端口号,在安全组中把端口范围设置为-1/-1,授权对象填0.0.0.0/0,即可开通全部端口号,阿腾云来详细说下阿里云服务器端口全部打开教程:
1370 0