似乎无法调整箱线图宽度
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/
我无法更改 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/