ggboxplot - 如何增加相邻箱形图之间的距离?

时间:2017-11-21 11:14:28

标签: r ggplot2 ggpubr

我正在使用ggpubr包来用ggboxplot做箱形图。关于如何增加相邻箱图之间距离的任何建议?

我已经使用R几周了,我知道我的脚本可能写得更好。

我的代码:

flowdata <- read.csv("flowdata.csv", header = TRUE, sep = ";")

flowdata$Haplotype = factor(flowdata$Haplotype,levels(flowdata$Haplotype)
[c(5,1,2,3,4,6)])

library(ggpubr)

p<-ggboxplot(flowdata, x="TP", y="Treg",  add = "jitter",width = 0.5, shape 
= "Treatment", fill = "Haplotype", palette = c("#0092d1","#62b232","#b23a32","#b232a3","#99cccc","#132a64"))+scale_shape_manual(values = c(21,23))

p1<-p+theme(legend.title = element_blank(), legend.text = element_text(size=8), text = element_text(family = "Calibri"), axis.text.x = element_text(angle = 45, hjust = 1))+ labs(x = expression(paste("")),
y = expression(paste(CD4^+{}, CD25^+{}, "cells/µL")))
p1 

enter image description here

2 个答案:

答案 0 :(得分:1)

参数'width'指定框的宽度,因此一个简单的解决方案是减少该值(从0.5开始)。这不会增加盒子的间距,但会增加之间的间距,从而使盒子更窄。

然而,在我看来,你的箱形图很好,但你的点(抖动)是重叠的,使图形看起来很乱。一个更简单的解决方案是删除它们,或将它们更改为点而不是抖动。或者你可以使用小提琴情节。

为了更精细的控制,可以使用'标准'ggplot2,也许使用可以为您提供格式的牛仔图:

p <- ggplot(data = flowdata, mapping = aes(x = TP, y = Treg, fill = Haplotype)) +
  geom_boxplot(position = position_dodge(0.5)) + 
  geom_jitter(aes(shape = Treatment)) +
  scale_shape_manual(c(21, 23)) + 
 scale_fill_manual(c("#0092d1","#62b232","#b23a32","#b232a3","#99cccc","#132a64")) +
  theme(legend.title = element_blank(), legend.text = element_text(size=8), text = element_text(family = "Calibri"), axis.text.x = element_text(angle = 45, hjust = 1)) + 
  labs(x = expression(paste("")), y = expression(paste(CD4^+{}, CD25^+{}, "cells/µL")))

答案 1 :(得分:0)

在亚当斯回答的基础上,我还建议你将箱形图分成几个方面,这样情节实际上是可读的。我认为单倍型可能是有趣的方面。此外,您可以减少抖动点的size或获得一些透明度alpha以使它们不那么存在,但是对于方面来说,箱线图已经更大,因此这可以解决可读性问题本身。

p <- ggplot(flowdata, aes(x = TP, y = Treg)) +
            geom_boxplot(position = position_dodge(0.5)) + 
            geom_jitter(aes(shape = Treatment), size = 0.5, alpha = 0.8) +
            facet_wrap(~Haplotype, ncol = 3) +
            scale_shape_manual(c(21, 23)) + 
            theme(legend.title = element_blank(), 
                  legend.text = element_text(size=8), 
                  text = element_text(family = "Calibri"), 
                  axis.text.x = element_text(angle = 45, hjust = 1)) + 
            labs(x = "", 
                 y = expression(paste(CD4^+{}, CD25^+{}, "cells/µL")))