如何解决ggplot多面板绘图x轴刻度标签拥挤重叠问题
问题原因
你之前在grid.arrange后追加theme语句报错,是因为grid.arrange输出的是网格图形对象(grob),并非ggplot2的绘图对象,无法直接叠加ggplot的主题或图层参数。
解决方法
你只需要在定义每个独立ggplot绘图时,手动指定x轴的刻度值,就可以实现仅保留起始、中间、末尾三个刻度的需求,不需要调整旋转角度,合并后也不会出现刻度重叠。
操作步骤
- 修改所有待合并单图的
scale_x_continuous参数
将每个单图代码里的scale_x_continuous(n.breaks = 10, limits = c(0, 3500))替换为手动指定刻度的版本:
# 按x轴范围0-3500设置起始0、中间1750、末尾3500三个刻度 scale_x_continuous(breaks = c(0, 1750, 3500), limits = c(0, 3500))
修改后的EstResPlt完整代码示例:
NewDat [[60]] EstRes <- NewDat [[60]] EstResPlt = ggplot(EstRes,aes(Distance3, `newBa`))+ geom_line() + # 替换原有的scale_x_continuous行 scale_x_continuous(breaks = c(0, 1750, 3500), limits = c(0, 3500))+ scale_y_continuous(n.breaks = 10, limits = c(0,25))+ xlab("Distance from Core (μm)") + ylab("Ba:Ca concentration(μmol:mol)") + geom_hline(yintercept=2.25, linetype="dashed", color = "red")+ geom_vline(xintercept = 1193.9, linetype="dashed", color = "grey")+ geom_vline(xintercept = 1965.5, linetype="dashed", color = "grey") + geom_vline(xintercept = 2616.9, linetype="dashed", color = "grey") + geom_vline(xintercept = 3202.8, linetype="dashed", color = "grey")+ geom_vline(xintercept = 3698.9, linetype="dashed", color = "grey") EstResPlt
- 对另外两个待合并的图
MigrPlt、OcResPlt做相同的x轴刻度调整,如果两个图的x轴范围和EstResPlt不同,按各自的范围计算三个断点即可(比如x范围0-2000就设breaks = c(0,1000,2000))。 - 所有单图调整完成后,直接运行原有的多面板合并代码即可:
MultiP <- grid.arrange(MigrPlt,OcResPlt,EstResPlt, nrow =1)
内容的提问来源于stack exchange,提问作者Angela Russell
相关产品推荐
相关产品推荐

