2

我正在使用 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 

在此处输入图像描述

4

2 回答 2

1

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

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

为了更好地控制,可以使用“标准”ggplot2,也许可以使用可以为您提供格式的 cowplot:

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")))
于 2017-11-21T12:59:52.837 回答
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")))
于 2017-11-21T14:19:19.633 回答