ggplot分面geom_boxplot:减少x轴类别之间的间距

5
我正在使用ggplot创建一个箱线图。当我减小箱线图的宽度时,x轴类别之间的间距会增加。我希望能够减小x轴类别之间的间距,并将箱线图彼此靠近。
p<-ggplot(data.plot1, aes(time2, Count))
p+geom_boxplot(outlier.shape = NA, width=0.3)+
  ggtitle("")+ylab("Cell Count (cells/mL) ")+ xlab("Time")  + 
  theme_bw()+  coord_cartesian(ylim = c(0, 850))+
  geom_hline(data=normal1, aes(yintercept = val), linetype="dashed")+
  facet_grid(.~CellType1)

在此输入图片描述

基本上,需要缩小Day 0、Day 30、Day 100之间的空间,并将箱形图彼此靠近。


1
ggplot会将它们等距分布以填充图形设备上的可用空间。如果您想让它们更接近一些,请使图形设备变窄。除非您希望它们更接近,同时每个面板都有很多空白空间? - joran
哦!我该如何使图形设备变窄? - user3089803
1
依赖项:如果设备存在于独立窗口中,则调整窗口大小,或在通过ggsave保存图像时更改设备大小。 - joran
谢谢!我现在知道该怎么做了。 - user3089803
2
你还可以增加盒子的宽度 geom_boxplot(width = .5) - rawr
1个回答

1

如评论中所述,缩小图形设备是一种方法。另一种不改变图形设备大小的方法是在条形和面板侧面之间添加空格。注意:由于您的问题无法复制,我使用了内置的infert数据集,以示范目的。假设这是您原始的并排箱线图:

p<-ggplot(infert, aes(as.factor(education), stratum))
p+geom_boxplot(outlier.shape = NA, width=0.3)+
  ggtitle("")+ylab("Cell Count (cells/mL) ")+ xlab("Time")  + 
  theme_bw()+  coord_cartesian(ylim = c(0, 80))+
  # geom_hline(data=normal1, aes(yintercept = val), linetype="dashed")+
  facet_grid(.~induced)

enter image description here

这样做可以通过在每个面板的两端添加空白来将类别归并在一起:
p+geom_boxplot(outlier.shape = NA, width=0.6)+
  ggtitle("")+ylab("Cell Count (cells/mL) ")+ xlab("Time")  + 
  theme_bw()+  coord_cartesian(ylim = c(0, 80))+
  # geom_hline(data=normal1, aes(yintercept = val), linetype="dashed")+
  facet_grid(.~induced) +
  scale_x_discrete(expand=c(0.8,0))

enter image description here

“scale_x_discrete(expand=c(0.8,0))”中的两个数字表示乘法和加法扩展常数,它们“使一些距离远离轴线”。请参见“?scale_x_discrete”。这有效地将每个面板中的箱线图“压缩”在一起,也减小了每个箱线图的宽度。为了弥补这一点,我在“geom_boxplot”中将宽度增加到“width=0.6”。请注意,现在x轴标签重叠了。你需要尝试不同的扩展因子和宽度大小,以达到你想要的效果。
另请参见此问题,涉及问题:Remove space between bars within a grid

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接