在连续的x轴上按组填充和躲避箱形图

NWa*_*ers 6 plot grouping r ggplot2 boxplot

我一直在遇到一些似乎很简单的问题:带有连续x轴的分组箱图.

这是最小的数据数据:

df <- cbind(expand.grid(x=1:10, rep=1:20, fill=c("A", "B")), y=runif(400))
Run Code Online (Sandbox Code Playgroud)

这就是我想要的; 你会看到我强迫x轴离散:

ggplot(df, aes(x=as.factor(x), y=y,  fill=fill)) + geom_boxplot()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

这是我在x连续离开时得到的,没有分组:

ggplot(df, aes(x=x, y=y,  fill=fill)) + geom_boxplot()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

当我添加分组时,颜色消失:

 ggplot(df, aes(x=x, y=y, group=x, fill=fill)) + geom_boxplot()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

要清楚,我想要的geom_point是:

ggplot(df, aes(x=x, y=y, group=x, color=fill)) + geom_point(position=position_dodge(width=.7))
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

...但是如果我尝试在箱线图中设置闪避:

ggplot(df,aes(x = x,y = y,color = fill))+ geom_boxplot(position = position_dodge(width = .7))

在此输入图像描述

有小费吗?我试过四处寻找:这个问题解决了连续的箱形图,但没有着色问题; 这个问题让我想知道我是否需要设置一个交互,但似乎没有得到预期的结果.任何帮助将非常感谢!

Hen*_*rik 11

来自?aes_group_order:

默认情况下,该组设置为图中所有离散变量的交互.

在您的数据中,您只有一个离散变量"fill".但是,我们希望将数据发送到分组既 "补" 和 "×".因此,我们需要使用group参数指定所需的分组.是的,你interaction是对的,是要走的路.

首先,稍微小一点的数据集(更容易将数据链接到输出):

d <- data.frame(x = rep(c(1, 2, 4), each = 8),
                grp = rep(c("a", "b"), each = 4),
                y = sample(24))
Run Code Online (Sandbox Code Playgroud)

然后是情节,我们按"x"和"grp"(interaction(x, grp))的不同组合对数据进行分组,并按"grp"分组fill:

ggplot(d, aes(x = x, y = y, group = interaction(x, grp), fill = grp)) +
  geom_boxplot()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述