我无法更改ggplot2 boxplot的宽度。
我知道大概有千分之一的人提出与此类似的问题,但是在花了最后两个小时试图找到解决方案之后(我很少这样做),我全力以赴。
此外,我想知道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"
)
我试图更改宽度,以至于它不是带有箱线图的整个图形,无济于事。我试过在ggplot,geom_boxplot和aes中将width = 0.5 / width = 0.1放进去,它什么也没改变。
有人可以帮忙吗?谢谢
编辑:感谢您的帮助。为了将来参考,我使用的代码是:
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"
)
答案 0 :(得分:1)
添加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)
答案 1 :(得分:0)
您给出的示例的问题似乎是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)
ggplot(aes(x=Group,y=Y),data=data)+
geom_boxplot(width=1)
也许也值得在USGS页面上查看ggplot2箱线图的技巧:https://owi.usgs.gov/blog/boxplots/