导语
GUIDE ╲
ggside 包旨在使用户能够轻松地将metadata添加到他们的 ggplots 中。ggside对于一些复杂数据的处理优于patchwork。
背景介绍
作为ggplot的扩展,ggside允许用户向主图中添加相关的图形信息,能够实现例如箱线图和密度分布的添加,使用ggside可以向图形中添加任何类型的附加层,通过geom_xside或 geom_yside的模式将几何图形添加到 x 轴或 y 轴上,接下来就让我们看看怎么使用吧!
-
R包安装
BiocManager::install("ggside")
library(ggside)
library(dplyr)
library(ggplot2)
可视化简介
01
应用实例
先利用数据集画一个正常的热图
summariseDiamond <- diamonds %>%
mutate(`Cut Clarity` = paste(cut, clarity)) %>%
group_by(`Cut Clarity`,cut, clarity, color) %>%
summarise(n = n(),
`mean Price` = mean(price),
sd = sd(price))
#> `summarise()` has grouped output by 'Cut Clarity', 'cut', 'clarity'. You can override using the `.groups` argument.
ggplot(summariseDiamond, aes(x = color, y = `Cut Clarity`)) +
geom_tile(aes(fill = `mean Price`))
##添加注释
summariseDiamond <- summariseDiamond %>%
group_by(`Cut Clarity`) %>%
mutate(`sd of means` = sd(`mean Price`))
ggplot(summariseDiamond, aes(x = color, y = `Cut Clarity`)) +
geom_tile(aes(fill = `mean Price`)) +
geom_ysidetile(aes(x = "sd of means", yfill = `sd of means`)) +
scale_yfill_gradient(low ="#FFFFFF", high = "#0000FF")
##对最大值、最小值、平均值、中值分别添加注释
ggplot(summariseDiamond, aes(x = color, y = `Cut Clarity`)) +
geom_tile(aes(fill = `mean Price`)) +
geom_ysidetile(aes(x = "max", yfill = after_stat(summarise),
domain = `mean Price`), stat = "summarise", fun = max) +
geom_ysidetile(aes(x = "mean",yfill = after_stat(summarise),
domain = `mean Price`), stat = "summarise", fun = mean) +
geom_ysidetile(aes(x = "median",yfill = after_stat(summarise),
domain = `mean Price`), stat = "summarise", fun = median) +
geom_ysidetile(aes(x = "min",yfill = after_stat(summarise),
domain = `mean Price`), stat = "summarise", fun = min) +
scale_yfill_gradient(low ="#FFFFFF", high = "#0000FF")
02
一些常用的功能
分面实例:先绘制一个原始图形
i2 <- iris %>%
mutate(Species2 = rep(c("A","B"), 75))
p <- ggplot(i2, aes(Sepal.Width, Sepal.Length, color = Species)) +
geom_point()
p2 <- p + geom_xsidedensity(aes(y=stat(density))) +
geom_ysidedensity(aes(x=stat(density))) +
theme_bw()
p2 + labs(title = "FacetNull")
##将几类样本分别统计分布
p2 + facet_wrap(Species~Species2) +
labs(title = "FacetWrap") +
guides(guide_axis(check.overlap = T))
按A、B两组摆放图片
p2 + facet_grid(Species~Species2, space = "free", scale = "free_y")
p + geom_xsidedensity(aes(y=stat(density), xfill = Species), position = "stack")+
geom_ysidedensity(aes(x=stat(density), yfill = Species2), position = "stack") +
theme_bw() +
facet_grid(Species~Species2, space = "free", scales = "free") +
labs(title = "FacetGrid", subtitle = "Collapsing All Side Panels") +
ggside(collapse = "all") +
scale_xfill_manual(values = c("darkred","darkgreen","darkblue")) +
scale_yfill_manual(values = c("black","gold"))
指定不同的注释类型
ggplot(mpg, aes(displ, hwy, colour = class)) +
geom_point(size = 2) +
geom_xsideboxplot(aes(y =class), orientation = "y") +
geom_ysidedensity(aes(x = after_stat(density)), position = "stack") +
theme(ggside.panel.scale = .3) +
scale_xsidey_discrete() +
scale_ysidex_continuous(guide = guide_axis(angle = 90), minor_breaks = NULL)
小编总结
R语言中进行图片注释的工具很多,比如公众号之前介绍过的patchwork通过拼接图片来实现,今天介绍的ggside作为ggplot的拓展包,对于复杂数据的统计和可视化的美观度上有独特的优势,大家也可以选择自己喜欢的工具哦!