似乎无法调整箱线图宽度

Lui*_*lva 3 r ggplot2 boxplot

我无法更改 ggplot2 箱线图的宽度。

我知道这可能是第一千次有人提出类似的问题,但在我花了最后两个小时试图找到解决方案(我很少这样做)之后,我已经全力以赴了。

此外,我想了解 ggplot2 的人可以在 30 秒内回答。

类似问题的示例代码

# Code from official ggplot2 help page
# https://ggplot2.tidyverse.org/reference/geom_boxplot.html
y <- rnorm(100)
df <- data.frame(
  x = 1,
  y0 = min(y),
  y25 = quantile(y, 0.25),
  y50 = median(y),
  y75 = quantile(y, 0.75),
  y100 = max(y)
)
ggplot(df, aes(x)) +
  geom_boxplot(
   aes(ymin = y0, lower = y25, middle = y50, upper = y75, ymax = y100),
   stat = "identity"
 )
Run Code Online (Sandbox Code Playgroud)

我尝试更改宽度,使其不是带有箱线图的整个图形,但无济于事。我尝试将 width = 0.5/width = 0.1 放入 ggplot、geom_boxplot 和 aes 中,但它没有任何改变。

有人可以帮忙吗?谢谢

编辑:感谢大家的帮助。为了将来参考,我使用的代码是:

y <- rnorm(100)
df <- data.frame(
  x = 1,
  y0 = min(y),
  y25 = quantile(y, 0.25),
  y50 = median(y),
  y75 = quantile(y, 0.75),
  y100 = max(y)
)
ggplot(df, aes(as.factor(x))) +
  geom_boxplot(
   aes(ymin = y0, lower = y25, middle = y50, upper = y75, ymax = y100),
   width = 0.1,
   stat = "identity"
 )
Run Code Online (Sandbox Code Playgroud)

Dyl*_*mes 7

您给出的示例的问题似乎是 X 值是数字。如果您的 x 和 y 值都是数字,我不确定箱线图是最好的方法,但如果这实际上是您想要的,请参阅 John Bell 的答案。

但是,如果您的 X 值实际上是因子,那么这个答案应该有效。如果您创建包含因子(组)的数据框,则该width功能将返回。

data<-data.frame("Group"=as.factor(rep(c(1,2),16)),"Y"=rnorm(32))

ggplot(aes(x=Group,y=Y),data=data)+
  geom_boxplot(width=.15)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

ggplot(aes(x=Group,y=Y),data=data)+
  geom_boxplot(width=1)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

还可能值得查看此 USGS 页面,了解有关 ggplot2 箱线图的提示:https://owi.usgs.gov/blog/boxplots/