大家应该在很多文章中看到类似箱线图或者小提琴形状的散点图。有时候的确给文章增彩不少,这种图就是抖动散点图。今天我们给大家介绍一个绘制抖动散点图的R包ggbeeswarm,但是呢,如果真正多样化绘制还需要ggplot2的协助。那么也就是我们需要两个包来完成我们抖动散点图的绘制:ggbeeswarm和ggplo2。具体安装我们不再赘述,ggplot2的使用可以参考我们前面的《R语言绘图之ggplot2》。
接下来我们看下是如何绘制,首先我们准备好前期工作包的载入以及数据的生成。
library(ggplot2)
library(ggbeeswarm)
set.seed(12345)
n<-100
dat<-rnorm(n*2)
接下来我们绘制简单的抖动散点图:
labs<-rep(c('a','b'),n)
ggplot(mapping=aes(labs, dat)) +geom_quasirandom()
那么如何为两组数据增加颜色呢,具体实例如下:
ggplot(mapping=aes(labs,dat))+geom_quasirandom(aes(color=labs))
颜色添加后,我们可能需要对应的组的先后顺序需要按我们的设置改变那么就需要进行一定的改造,示例如下
labs2<-factor(labs,levels=c('b','a'))#level可以设置因子的先后顺序
ggplot(mapping=aes(labs2,dat))+geom_quasirandom(aes(color=labs))
有时候我们需要图形的方向发生改变,那么我们就需要对参数groupOnX进行设置,true代表垂直;false代表横着。实例如下
ggplot(mapping=aes(dat,labs))+geom_quasirandom(aes(color=labs),groupOnX=FALSE)
那我们如果需要对每一组数据设置子集,那么就用到了下面的程序:
labs2<-factor(rep(1:2,each=n))#设置子集的因子
ggplot(mapping=aes(labs,dat,color=labs2))+geom_quasirandom(dodge.width=.8)
当然抖动散点图不是所有的都会绘制出来很好看,这就需要我们自己去实践,下面是对不同个数样本的数据的绘制,到时候可以根据自己的数据选择是否适合,毕竟美观才是我们的目的。
dat <- list(
'10 points'=rnorm(10),
'50 points'=rnorm(50,2),
'200 points'=c(rnorm(400), rnorm(100,5)),
'5000 points'= rnorm(5000,1)
)
labs<-rep(names(dat),sapply(dat,length))
labs<-factor(labs,levels=unique(labs))
dat<-unlist(dat)
ggplot(mapping=aes(labs,dat))+geom_quasirandom(alpha=.3,varwidth=TRUE)