前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >主图注释怎么做?ggside来帮你!

主图注释怎么做?ggside来帮你!

作者头像
作图丫
发布2022-03-29 10:04:55
6020
发布2022-03-29 10:04:55
举报
文章被收录于专栏:作图丫

导语

GUIDE ╲

ggside 包旨在使用户能够轻松地将metadata添加到他们的 ggplots 中。ggside对于一些复杂数据的处理优于patchwork。

背景介绍

作为ggplot的扩展,ggside允许用户向主图中添加相关的图形信息,能够实现例如箱线图和密度分布的添加,使用ggside可以向图形中添加任何类型的附加层,通过geom_xside或 geom_yside的模式将几何图形添加到 x 轴或 y 轴上,接下来就让我们看看怎么使用吧!

-

R包安装

代码语言:javascript
复制
BiocManager::install("ggside")
library(ggside)
library(dplyr)
library(ggplot2)

可视化简介

01

应用实例

先利用数据集画一个正常的热图

代码语言:javascript
复制
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`))
代码语言:javascript
复制
##添加注释
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")
代码语言:javascript
复制
##对最大值、最小值、平均值、中值分别添加注释
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

一些常用的功能

分面实例:先绘制一个原始图形

代码语言:javascript
复制
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")
代码语言:javascript
复制
##将几类样本分别统计分布
p2 + facet_wrap(Species~Species2) +
  labs(title = "FacetWrap") +
  guides(guide_axis(check.overlap = T))

按A、B两组摆放图片

代码语言:javascript
复制
p2 + facet_grid(Species~Species2, space = "free", scale = "free_y")
代码语言:javascript
复制
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"))

指定不同的注释类型

代码语言:javascript
复制
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的拓展包,对于复杂数据的统计和可视化的美观度上有独特的优势,大家也可以选择自己喜欢的工具哦!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-12-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作图丫 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档