在 ggplot 的分面网格中避免 x 轴标签重叠。

15

我试图绘制一个生长曲线的分面网格,但是每个曲线端点的标签彼此重叠。以下是使用mpg数据的示例代码:

print(ggplot(data = aggregate(hwy~class+year, data=mpg, mean), aes(x = year, y=hwy))+
    geom_line(aes(group = 1))+
    geom_point()+
    facet_wrap(~class,  nrow = 2)+
    xlab("Year")+
    scale_x_discrete(limits=unique(mpg$year)))

如何防止这种重叠情况,也许通过将刻度标记和标签从图形边缘向内移动。 我尝试使用theme内的margin,但我也没有成功。 谢谢您的帮助。


2
最简单的解决方法是增加图形窗口或输出设备的宽度。但是,您可以通过旋转标签 p + theme(axis.text.x = element_text(angle=-90, vjust=0.5)) 来解决问题。或者您可以使用 expand 添加一些空间..scale_x_discrete(expand=c(0.5, 0.5), limits=unique(mpg$year)) - user20650
1个回答

27

我猜想你想要调整面板间水平间距,可以使用 theme 中的 panel.spacing.x(在 ggplot2_3.0.0 中测试过)。

ggplot(data = aggregate(hwy~class+year, data=mpg, mean), aes(x = year, y=hwy))+
  geom_line(aes(group = 1))+
  geom_point()+
  facet_wrap(~class,  nrow = 2)+
  xlab("Year")+
  scale_x_discrete(limits=unique(mpg$year)) +
  theme(panel.spacing.x = unit(4, "mm"))

之前

输入图像描述

之后 - 使用 panel.spacing.x()

输入图像描述


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