似乎无法调整箱线图宽度

Cant's seem to adjust boxplot width

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

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

此外,我猜懂 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"
 )

我试图改变宽度,使它不是带有箱线图的整个图形,但无济于事。我试过将 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"
 )

添加 xlim(0,2) 加宽 x 轴,从而缩小箱线图:

ggplot(df, aes(x)) +
  geom_boxplot(
   aes(ymin = y0, lower = y25, middle = y50, upper = y75, ymax = y100),
   stat = "identity"
 ) +
 xlim(0,2)

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

但是,如果您的 X 值实际上是因子,则此答案应该有效。 如果您使用因子(组)创建数据框,则 width 功能 returns.

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)

ggplot(aes(x=Group,y=Y),data=data)+
  geom_boxplot(width=1)

也可能值得查看此 USGS 页面以获取有关 ggplot2 箱线图的提示:https://owi.usgs.gov/blog/boxplots/