R 中离散 x 轴上的分组箱线图
Grouped Boxplot on discrete x-axis in R
我有一个 dataframe
类似于下面的:
df
variable n value
1 x_1 200 2.883524e+22
2 x_1 200 6.228677e+19
3 x_1 200 1.152941e+23
4 x_1 200 2.873297e+20
5 x_1 200 2.860104e+22
6 x_2 200 2.756752e+04
7 x_2 200 6.430455e+02
8 x_2 200 5.933116e+09
9 x_2 200 5.935287e+09
10 x_2 200 1.283504e+06
11 x_1 250 2.137800e+06
12 x_1 250 1.439365e+04
13 x_1 250 5.685357e+10
14 x_1 250 5.727160e+10
15 x_1 250 4.151983e+08
16 x_2 250 5.181344e+06
17 x_2 250 1.899797e+04
18 x_2 250 5.301975e+10
19 x_2 250 5.434231e+10
20 x_2 250 2.158825e+09
我正在尝试用 x-axis
上的 n
、y-axis
上的 value
(使用 scale_y_log10()
)和variable
作为 fill
箱线图。但是,我正在努力在 x_axis
上实际绘制 n
的每个值并对箱线图进行分组。我目前有:
ggplot(data = df, mapping = aes(x = n, y = value, fill = variable)) +
geom_boxplot(aes(group = cut_width(variable, 0.25))) +
scale_y_log10()
但我正在努力获得我希望的结果,是否可以在连续 x-axis
上开发这种类型的箱线图并按 variable
分组?
提前致谢。
您可以使 x 轴离散,只需输入您想要在 x 轴上进行适当中断的额外因子水平:
ggplot(data = df, aes(x = factor(n, levels = c(200, 250, 300)), y = value)) +
geom_boxplot(aes(fill = variable)) +
scale_y_log10() +
scale_x_discrete(drop = FALSE, name = 'n')
我有一个 dataframe
类似于下面的:
df
variable n value
1 x_1 200 2.883524e+22
2 x_1 200 6.228677e+19
3 x_1 200 1.152941e+23
4 x_1 200 2.873297e+20
5 x_1 200 2.860104e+22
6 x_2 200 2.756752e+04
7 x_2 200 6.430455e+02
8 x_2 200 5.933116e+09
9 x_2 200 5.935287e+09
10 x_2 200 1.283504e+06
11 x_1 250 2.137800e+06
12 x_1 250 1.439365e+04
13 x_1 250 5.685357e+10
14 x_1 250 5.727160e+10
15 x_1 250 4.151983e+08
16 x_2 250 5.181344e+06
17 x_2 250 1.899797e+04
18 x_2 250 5.301975e+10
19 x_2 250 5.434231e+10
20 x_2 250 2.158825e+09
我正在尝试用 x-axis
上的 n
、y-axis
上的 value
(使用 scale_y_log10()
)和variable
作为 fill
箱线图。但是,我正在努力在 x_axis
上实际绘制 n
的每个值并对箱线图进行分组。我目前有:
ggplot(data = df, mapping = aes(x = n, y = value, fill = variable)) +
geom_boxplot(aes(group = cut_width(variable, 0.25))) +
scale_y_log10()
但我正在努力获得我希望的结果,是否可以在连续 x-axis
上开发这种类型的箱线图并按 variable
分组?
提前致谢。
您可以使 x 轴离散,只需输入您想要在 x 轴上进行适当中断的额外因子水平:
ggplot(data = df, aes(x = factor(n, levels = c(200, 250, 300)), y = value)) +
geom_boxplot(aes(fill = variable)) +
scale_y_log10() +
scale_x_discrete(drop = FALSE, name = 'n')