我正在使用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)

r - ggplot刻面geom_boxplot : reduce space between x-axis categories-LMLPHP

因此,基本上,减少第0天,第30天,第100天之间的间隔,并使箱形图彼此靠近。

最佳答案

如评论中所述,缩小图形设备是一种实现方法。另一种不更改图形设备尺寸的方法是在条形图和面板的侧面之间添加空间。 注意:由于您的问题不可重现,因此我使用了内置的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)

r - ggplot刻面geom_boxplot : reduce space between x-axis categories-LMLPHP

通过在每个面板的两端添加空格将类别归为一类:
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))

r - ggplot刻面geom_boxplot : reduce space between x-axis categories-LMLPHP
scale_x_discrete(expand=c(0.8,0))中的两个数字表示“相距轴一定距离”的乘法和加法扩展常数。参见?scale_x_discrete。这样可以有效地将每个面板中的箱线图“挤压”在一起,这也减小了每个箱线图的宽度。为了弥补这一点,我在width=0.6中将宽度增加到geom_boxplot。请注意,x轴标签现在重叠了。您将不得不尝试不同的扩展因子和宽度大小,以准确获得所需的效果。

另请参阅以下问题以获取相关问题:Remove space between bars within a grid

关于r - ggplot刻面geom_boxplot : reduce space between x-axis categories,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31796914/

10-12 18:26