繁体   English   中英

如何在ggplot2中控制箱线图的x位置?

[英]How can I control the x position of boxplots in ggplot2?

首先,设置阶段的快速示例:

set.seed(123)
dat <- data.frame( 
  x=rep( c(1, 2, 4, 7), times=25 ), 
  y=rnorm(100), 
  gp=rep(1:2, each=50) 
)

p <- ggplot(dat, aes(x=factor(x), y=y))
p + geom_boxplot(aes(fill = factor(gp)))

我想制作一个类似的情节,除了控制每组箱图的x位置。 我的第一个猜测是使用非因子x美学控制沿着这些箱形图的x轴的位置。 然而,一旦我尝试这样做,似乎geom_boxplot并不像我希望的那样解释美学。

p + geom_boxplot( aes(x=x, y=y, fill=factor(gp)) )

特别是,当geom_boxplot是非因素时,它们似乎以某种方式折叠所有x值。

有没有办法用ggplot2控制箱线图的x位置? 要么通过指定因子美学的每个层次之间的距离,要么更巧妙地使用非要素美学,否则?

您可以使用scale_x_discrete()来设置x轴的位置(刻度)。

p <- ggplot(dat, aes(x=factor(x), y=y))
p + geom_boxplot(aes(fill = factor(gp))) + 
    scale_x_discrete(limits=1:7)

您也可以使用group美学来做到这一点。 但是,我不确定为什么你不能只将x传递给该group 这不起作用:

ggplot() + 
  geom_boxplot(data=dat, aes(x=x, y=y, fill=factor(gp), group=x))

但这样做:

ggplot() + 
  geom_boxplot(data=dat, aes(x=x, y=y, fill=factor(gp), group=paste(x, gp)))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM