ggside包添加边际图形

获取更多R语言知识,请关注公众号:医学和生信笔记

医学和生信笔记,专注R语言在临床医学中的使用,R语言数据分析和可视化。主要分享R语言做医学统计学、meta分析、网络药理学、临床预测模型、机器学习、生物信息学等。


ggside有点类似于 ggExtra,是用来添加边际图形的,但是比 ggExtra更加灵活。可以添加非常多的类型,在语法上也更加靠近 ggplot2的写法。

aplot有时候可以做到,但是专门的事还是要给专门的包做!

包治百病!

安装

#CRAN
install.packages("ggside")
#Github
devtools::install_github("jtlandis/ggside")

基础使用

使用起来也是通过添加图层的方式。通过新提供的多种geom_xsidexxx()/geom_ysidexxx(),可以实现在x轴或者y轴添加各种不同的图形!

看下面这个例子,使用mpg数据集进行演示,先画一个散点图,横坐标是displ,纵坐标是hwy,都是连续型变量,通过class(离散型变量)映射不同的颜色。

library(ggside)
## 载入需要的程辑包:ggplot2
## Registered S3 method overwritten by 'ggside':
##   method from   
##   +.gg   ggplot2

p <- ggplot(mpg, aes(displ, hwy, colour = class)) + 
  geom_point(size = 2) +
  theme_bw()

p

plot of chunk unnamed-chunk-2

现在我们想在散点图的上方添加一个箱线图,用以显示不同classdispl的分布情况;在散点图的左侧添加密度图,用来显示hwy这一个变量的分布。

ggExtra做不到,因为添加的边际图形两边都是一样的。aplot是可以做到的,但是有时候因为数据问题会出现显示不全。

p + ggside(y.pos = "left")+ # 指定边际图形的位置
  geom_xsideboxplot(aes(y=class),orientation = "y")+ # orientation表示方向是水平还是垂直
  scale_xsidey_discrete()+
  geom_ysidedensity(aes(x = after_stat(density)), position = "stack")+
  theme(ggside.panel.scale = 0.3) # 调整边际图形的高度或宽度

plot of chunk unnamed-chunk-3

可以看到,上面这个图完美满足我们的需求。

下面有几个需要解释的地方。

首先是geom_xsideboxplot(aes(y=class),orientation = "y"),其中我们重新指定了y=class,因为最开始的图中,我们的横轴是displ,纵轴是hwy,现在我们要展示calss这个分类变量了,横坐标还是一样的,纵坐标需要换掉!

接下来的scale_xsidey_discrete(),因为重新指定了y轴的映射,所以强制变为离散型,这样才不会和最开始的连续性映射冲突。

以上就是ggside的基础用法。接下来看看其他用法。

进阶

目前支持非常多geom

  • GeomBar
  • GeomBoxplot
  • GeomDensity
  • GeomFreqpoly
  • GeomHistogram
  • GeomLine
  • GeomPath
  • GeomPoint
  • GeomText
  • GeomTile
  • GeomViolin

同时也支持分面操作哦!

library(dplyr)
## 
## 载入程辑包:'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union

i2 <- iris %>%
  mutate(Species2 = rep(c("A","B"), 75))

p <- ggplot(i2, aes(Sepal.Width, Sepal.Length, color = Species)) +
  geom_point()+
  geom_xsidedensity(aes(y=stat(density))) +
  geom_ysidedensity(aes(x=stat(density))) +
  theme_bw()

p

plot of chunk unnamed-chunk-4

分面操作:

p +  facet_wrap(Species~Species2) +
  labs(title = "FacetWrap") +
  guides(guide_axis(check.overlap = T))

plot of chunk unnamed-chunk-5

当然facet_grid()也是支持的。

p + facet_grid(Species~Species2, space = "free", scale = "free_y") 

plot of chunk unnamed-chunk-6

OK,以上就是ggside的基本用法,你们学废了吗?

获取更多R语言知识,请关注公众号:医学和生信笔记

医学和生信笔记,专注R语言在临床医学中的使用,R语言数据分析和可视化。主要分享R语言做医学统计学、meta分析、网络药理学、临床预测模型、机器学习、生物信息学等。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值