打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
使用ggside添加边际图形
  Stay hungry, stay foolish!   

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的基本用法,你们学废了吗?

以上就是今天的内容,希望对你有帮助哦!欢迎点赞、在看、关注、转发

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
ggplot2笔记1:认识ggplot2、基本用法以及如何绘制几何对象
R学习:R for Data Science(一)
第一部分探索
可视化:R语言数据可视化之散点图
《R数据科学》第1章-ggplot2图层与绘图大法-全
【R分享|实战】科白君浅谈ggplot2包学习逻辑
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服