得到 ggplot2_3.2.0 每组不能绘制多个箱线图的错误

dan*_*dan 5 r ggplot2 boxplot

我有xy我想使用R's绘制的数据ggplot

library(dplyr)
library(ggplot2)
set.seed(1)

df <- data.frame(group = unlist(lapply(LETTERS[1:5],function(l) rep(l,5))),
                 x = rep(1:5,5),
                 y = rnorm(25,2,1),
                 y.se = runif(25,0,0.1)) %>%
  dplyr::mutate(y.min = y-3*y.se,
                y.low = y-y.se,
                y.high = y+y.se,
                y.max = y+3*y.se)
Run Code Online (Sandbox Code Playgroud)

如您所见,whiledf$x是一个点 ( integer),df$y有一个相关的错误,我想使用箱线图将其包含在内。

所以我的目的是df按其x坐标绘制每一行,使用y.min, y.low, y, y.high, 并y.max构造 a boxplot, colorand fillit by group。这意味着,我希望将 中的每一行df绘制为box沿单独x-axis位置的 a 和facetedby df$group,这样df$group A的五个重复首先出现,然后出现在其右侧df$group B的重复中,依此类推。

在我刚刚安装了最新的ggplot2软件包 ( ggplot2_3.2.0)之前,此代码用于我的目的:

ggplot(df,aes(x=x,ymin=y.min,lower=y.low,middle=y,upper=y.high,ymax=y.max,col=group,fill=group))+
geom_boxplot(position=position_dodge(width=0),alpha=0.5,stat="identity")+
facet_grid(~group,scales="free_x")+scale_x_continuous(breaks = integerBreaks())
Run Code Online (Sandbox Code Playgroud)

现在我收到此错误:

Error: Can't draw more than one boxplot per group. Did you forget aes(group = ...)?
Run Code Online (Sandbox Code Playgroud)

任何的想法?

Mar*_*ius 4

x您需要为和的每个组合绘制一个单独的箱线图group,因此您可以将组美学设置为interaction(x, group)

ggplot(df,aes(x=x,ymin=y.min,lower=y.low,middle=y,upper=y.high,
              ymax=y.max,col=group,fill=group))+
    geom_boxplot(aes(group = interaction(x, group)), 
                 position=position_dodge(width=0),
                 alpha=0.5,stat="identity")
Run Code Online (Sandbox Code Playgroud)