ggcor | 相关分析和可视化的扩展工具

简介: ggcor | 相关分析和可视化的扩展工具

拿到一个陌生的图,第一步肯定得查查看是否有文献来源。于是,我用百度/谷歌识图搜索了一下,好家伙,不搜不知道,一搜吓一跳,19年Science发表过类似的图片后,各路大神都在复现,甚至还开发了专门的R包。

image.png

既然有现成的包,那咱也不客气了,直接拿来用就是了。


安装 ggcor


# Gitee地址安装(试了好几个)
devtools::install_git("https://gitee.com/dr_yingli/ggcor") 
library(ggcor)
library(ggplot2)

相关性图


# 以mtcars 数据集为例 
# 不同的图形代码如下
library(patchwork)
# layer of tile
A <- quickcor(mtcars) + geom_colour()
# layer of circle and trim the lower triangle
B <- quickcor(mtcars, type = "upper") + geom_circle2()
# layer of ellipse and not show diagonal
C <- quickcor(mtcars, type = "lower", show.diag = FALSE) + geom_ellipse2()
# layer of square and reorder correlation matrix by cluster
D <- quickcor(mtcars, cluster = TRUE) + geom_square()
# layer of confidence box
E <- quickcor(mtcars, cor.test = TRUE) + geom_confbox()
# different layer of upper/lower triangle
F <- quickcor(mtcars, cor.test = TRUE) +
  geom_square(data = get_data(type = "lower", show.diag = FALSE)) +
  geom_mark(data = get_data(type = "upper", show.diag = FALSE)) +
  geom_abline(slope = -1, intercept = 12)
(A+B+C)/(E+D+F)+ plot_annotation(tag_levels = 'A')

image.png


组合相关性图


library(dplyr)
library(vegan)
library(ggplot2)
# 载入示例数据
data("varechem", package = "vegan")
data("varespec", package = "vegan")
# Mantel.test 检验计算矩阵相关性
mantel <- mantel_test(varespec, varechem, mantel.fun = 'mantel.randtest',spec.dist.method = 'bray', env.dist.method = 'euclidean', 
                      spec.select = list(Spec01 = 1:7,
                                         Spec02 = 8:18,
                                         Spec03 = 19:37
                                                   )) %>% 
  mutate(r_value = cut(r, breaks = c(-Inf, 0.25, 0.5, Inf), 
                   labels = c('<0.25', '0.25-0.5', '>=0.5'), right = FALSE),
         p_value = cut(p.value, breaks = c(-Inf, 0.001, 0.01, 0.05, Inf), 
                       labels = c('<0.001', '0.001-0.01', '0.01-0.05', '>=0.05'), right = FALSE))
quickcor(varechem, type = "upper") +
  geom_square() +
  anno_link(aes(colour = p_value, size = r_value), data = mantel) +
  scale_size_manual(values = c(0.5, 1, 2)) +
  scale_colour_manual(values = c("#D95F02", "#1B9E77", "#A2A2A288")) +
  guides(size = guide_legend(title = "Mantel's r",
                             override.aes = list(colour = "grey35"), 
                             order = 2),
         colour = guide_legend(title = "Mantel's p", 
                               override.aes = list(size = 3), 
                               order = 1),
         fill = guide_colorbar(title = "Pearson's r", order = 3))

image.png


环状热图


# 需要安装ambient包
install.packages('ambient') 
library(ambient)
rand_correlate(100, 8) %>% ## require ambient packages
  quickcor(circular = TRUE, cluster = TRUE, open = 45) +
  geom_colour(colour = "white", size = 0.125) +
  anno_row_tree() +
  anno_col_tree() +
  set_p_xaxis() +
  set_p_yaxis()

image.png


参考


houyunhuang/ggcor · GitHub


dr.yingli/ggcor (gitee.com)


相关文章
|
机器学习/深度学习 存储 运维
利用机器学习优化数据中心冷却系统
在数据中心运营成本中,冷却系统的能源消耗占据了显著比例。随着数据中心规模不断扩大,传统的冷却管理方法逐渐显得不足以应对复杂多变的热负荷。本文提出了一种基于机器学习的方法,旨在优化数据中心的冷却系统性能。通过收集历史运行数据和实时环境参数,构建预测模型来动态调整冷却策略,实现能源消耗与散热效率之间的最佳平衡。实验结果表明,该方法可以有效降低能耗,并保持数据中心内环境的稳定性。
414 1
|
数据可视化
R语言绘图教程丨Nature论文都在用的多组比较箱线图,自动计算显著性并标注,附带误差线
R语言绘图教程丨Nature论文都在用的多组比较箱线图,自动计算显著性并标注,附带误差线
|
IDE 网络安全 开发工具
GitLab - GitLab 使用 SSH 免密登录
GitLab 使用 SSH 免密登录
2031 0
GitLab - GitLab 使用 SSH 免密登录
|
11月前
|
JSON JavaScript 测试技术
用Postman玩转电商API:一键测试+自动化请求教程
Postman 是电商 API 测试的高效工具,涵盖基础配置、自动化测试、环境管理与请求自动化,助你快速提升开发效率。
|
9月前
|
程序员
程序员自设置的喝水闹钟程序,助力身体健康
长时间对着电脑、忙于工作或带娃,常常忘记喝水?Aipy 提醒喝水小工具,每45分钟弹出可爱提示,持续30秒无法关闭,强制提醒你补水,让喝水变得有趣又有仪式感!
|
算法 数据可视化 数据挖掘
课程视频|R语言bnlearn包:贝叶斯网络的构造及参数学习的原理和实例(上)
课程视频|R语言bnlearn包:贝叶斯网络的构造及参数学习的原理和实例
|
缓存 NoSQL Java
大数据-50 Redis 分布式锁 乐观锁 Watch SETNX Lua Redisson分布式锁 Java实现分布式锁
大数据-50 Redis 分布式锁 乐观锁 Watch SETNX Lua Redisson分布式锁 Java实现分布式锁
337 3
大数据-50 Redis 分布式锁 乐观锁 Watch SETNX Lua Redisson分布式锁 Java实现分布式锁
|
安全 Java Linux
Golang深入浅出之-初识Go语言:语言特点与开发环境搭建
【4月更文挑战第20天】Go语言(Golang)由Google于2009年推出,以其简洁语法、高效执行、强大的并发模型和丰富标准库著称。主要特点包括:1) 代码结构清晰,易于阅读;2) 编译速度快,运行效率高,内置垃圾回收;3) 使用goroutines和channels实现并发;4) 标准库涵盖网络、并发等多个领域;5) 支持跨平台编译。要搭建开发环境,需下载Go SDK,配置环境变量,并验证安装。常见问题涉及导入包未使用、错误处理、并发安全和`defer`语句的使用。
590 0
|
JavaScript 测试技术
Selenium报错ElementNotInteractableException元素不可交互,该如何解决?
本文介绍了Selenium测试中遇到的`ElementNotInteractableException`异常,该异常通常由于元素被遮挡、不可见、被禁用或位于框架内导致。解决方法包括等待元素可交互、确保元素可见、检查元素状态及切换到正确框架。示例代码展示了如何使用显式等待策略处理此异常,以提高测试稳定性。
|
NoSQL Go Redis
Asynq: 基于Redis实现的Go生态分布式任务队列和异步处理库
Asynq: 基于Redis实现的Go生态分布式任务队列和异步处理库
1257 0