增加分面箱线图之间的空间

3

我正在使用ggplot2制作一个分面箱形图。我想要在每个分面中均匀增加箱形图之间的垂直空间,以便可以在这些空间中包含一些文本,但是到目前为止我还没有能够做到。

我使用了position_dodge()函数,并增加了宽度,如此处所建议:ggplot increase distance between boxplots,但是图表仍然保持不变。以下是一段代码,可供您复现该问题:

library(ggplot2)

set.seed(2)
bp_data <- data.frame(Result=runif(100, min=0, max=2),
                  Method=rep(c("s1", "s2", "s3", "s4"), 25),
                  Var=rep(c("v1", "v2", "v3", "v4", "v5"), 20),
                  stringsAsFactors=FALSE)

bp <- ggplot(bp_data) + 
  aes(x = Method, y = Result) +
  geom_boxplot(width=0.7, position=position_dodge(width=5.0)) +
  coord_flip() +
  facet_grid(Var ~ .)
bp

position_dodge函数的width参数设定不同值并没有影响。

请注意,我想要做的是增加每个分面内箱线图之间的间距,而不是增加分面之间的间距。


1
你可以通过设置较小的 width 值来增加空间。由于每个位置只有一个条形图,因此 position_dodge 没有效果。 - mt1022
1个回答

2

一个解决方法是将你的方法转换为数字变量,然后增加数字值:

bp_data$Method_num <- as.integer(factor(bp_data$Method))
bp_data$Method_num <- 1.5 * bp_data$Method_num

bp <- ggplot(bp_data) + 
  aes(x = Method_num, y = Result, group = Method) +
  geom_boxplot(width=0.7, position=position_dodge(width=5.0)) +
  coord_flip() +
  facet_grid(Var ~ .) +
  scale_x_continuous(breaks = unique(bp_data$Method_num), 
                     labels = unique(bp_data$Method)) +
  theme(panel.grid.minor.y = element_blank())
bp

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接