如何在 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
。但是,您需要按 class
和 x_int
对数据进行分组。因此,我们可以通过在 x_int
和 class
的组参数中使用 interaction
来指定此分组。然后,填写 class
.
library(tidyverse)
df %>%
ggplot(aes(x=x_int, y=y, group = interaction(x_int, class), fill = class)) +
geom_boxplot()
输出
我正在尝试制作一个具有连续 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
。但是,您需要按 class
和 x_int
对数据进行分组。因此,我们可以通过在 x_int
和 class
的组参数中使用 interaction
来指定此分组。然后,填写 class
.
library(tidyverse)
df %>%
ggplot(aes(x=x_int, y=y, group = interaction(x_int, class), fill = class)) +
geom_boxplot()
输出