使用ggside添加边际图形
关注公众号,发送R语言或Python,获取学习资料!
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
现在我们想在散点图的上方添加一个箱线图,用以显示不同class
在displ
的分布情况;在散点图的左侧添加密度图,用来显示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) # 调整边际图形的高度或宽度
可以看到,上面这个图完美满足我们的需求。
下面有几个需要解释的地方。
首先是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
分面操作:
p + facet_wrap(Species~Species2) +
labs(title = "FacetWrap") +
guides(guide_axis(check.overlap = T))
当然facet_grid()
也是支持的。
p + facet_grid(Species~Species2, space = "free", scale = "free_y")
OK,以上就是ggside
的基本用法,你们学废了吗?
以上就是今天的内容,希望对你有帮助哦!欢迎点赞、在看、关注、转发!
欢迎在评论区留言或直接添加我的微信!
End
欢迎关注公众号:医学和生信笔记
“医学和生信笔记 公众号主要分享:1.医学小知识、肛肠科小知识;2.R语言和Python相关的数据分析、可视化、机器学习等;3.生物信息学学习资料和自己的学习笔记!
往期回顾
你还不会画网络图?
R语言生信图表学习之网络图
R语言画好看的聚类树
图片含有中文生成PDF是乱码怎么办?
使用compareGroups包1行代码生成基线资料表