箱线图由一个连续变量(I - 在 x 轴上索引)和一个因子变量(方法 - 按颜色索引)分组。
这是我的重复,一切看起来都很好,但是箱线图组不是根据连续变量的值放置的:
我的代码如下:
df5 <- data.frame(
I = factor(rep(c(50, 100, 200, 400), each = dim(df1)[1])),
rbind(df1, df2, df3, df4)
)
ggplot(df5, aes(x = I, y = Values*1e05, fill = Method)) +
geom_boxplot() +
scale_fill_manual(values = c("#E41A1C", "#377EB8", "#4DAF4A", "#FF7F00")) +
labs(x = "I (Number of subjects)", y = expression(paste("MISE(", beta[1], "(s))(x", 10^-5, ")"))) +
theme_minimal()
我不得不说,我需要将连续变量的类型更改为因子才能正确显示四组箱线图。但箱线图组现在是等距的(不是根据连续变量的值:50、100、200、400)。
您能给我一些关于如何处理这个问题的提示吗?谢谢!
您能给我一些关于如何处理这个问题的提示吗?谢谢!
问题是您映射到
x
又名 I
的变量是 factor
而不是 numeric
。因此,为了达到您想要的结果,请将 I
转换为 numeric
。此外,为了完成这项工作,您还必须明确映射 group
aes,以便箱线图仍然按 I
和 Method
分组。为此,我将 interaction(I, Method)
映射到 group
。
使用一些虚假的随机示例数据:
df1 <- df2 <- df3 <- df4 <- expand.grid(
Method = letters[1:4],
Values = seq(100)
) |>
transform(Values = runif(400))
df5 <- data.frame(
I = factor(rep(c(50, 100, 200, 400), each = dim(df1)[1])),
rbind(df1, df2, df3, df4)
)
library(ggplot2)
df5$I <- as.numeric(as.character(df5$I))
ggplot(df5, aes(
x = I, y = Values * 1e05,
fill = Method,
group = interaction(I, Method)
)) +
geom_boxplot() +
scale_fill_manual(
values = c("#E41A1C", "#377EB8", "#4DAF4A", "#FF7F00")
) +
labs(
x = "I (Number of subjects)",
y = expression(
paste("MISE(", beta[1], "(s))(x", 10^-5, ")")
)
) +
theme_minimal()