如何在 ggplot2 中绘制具有正确间隔的连续 x 轴值和分组变量的箱线图?

How to plot a boxplot with correctly spaced continuous x-axis values and a grouping variable in ggplot2?

我正在尝试制作一个具有连续 x 轴的箱线图,其中 x 轴标签按其数值正确间隔。我发现 的答案很有帮助,但我的数据每年也有一个分组变量。

library(ggplot2)

x <- rep(c('1','1', '10', '10', '11', '11' ,'20', '20'), 2)
y <- runif(16, 1,20)
class <- rep(c('in', 'out'), 8)
df <- data.frame(x = x, y=y, class=class)
df$x_int <- as.integer(df$x)

如果我不使用变量 class,那么我可以使用 group 参数来实现 x 轴上的正确间距。

ggplot(data=df, aes(x=x_int, y=y, group=Year_int))+
  geom_boxplot()

但是当我添加 fill=class 时,它似乎没有做任何事情并产生完全相同的情节。

我希望箱线图显示每年的 class 分组(如下所示),但与第一个图的 x 轴间距正确。

ggplot(data=df, aes(x=x, y=y, fill=class))+
  geom_boxplot()

在您的数据中,您有一个离散变量,即 class。但是,您需要按 classx_int 对数据进行分组。因此,我们可以通过在 x_intclass 的组参数中使用 interaction 来指定此分组。然后,填写 class.

library(tidyverse)

df %>% 
  ggplot(aes(x=x_int, y=y, group = interaction(x_int, class), fill = class)) +
  geom_boxplot()

输出