我无法更改 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)
您给出的示例的问题似乎是 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/