如何在ggplot分面图中仅保留面板的底部与左侧边框?
解决ggplot2分面面板仅保留底部和左侧边框的问题
你可以通过两种方式实现只保留每个分面面板的底部和左侧边框,无需保留完整的四边边框:
方法一:使用ggthemes包简化设置
ggthemes包提供了panel_border()函数,可以直接指定显示哪些边的边框,无需手动调整:
- 先安装并加载包:
install.packages("ggthemes") library(ggthemes)
- 修改你的ggplot代码,替换原有的
panel.border参数:
ggplot(df,aes(x=x,y=y)) + facet_grid(group.a~group.b) + theme_minimal() + theme(legend.position = "bottom", legend.title = element_blank(), legend.direction = "horizontal", legend.margin = margin(-20,0,0,0), panel.grid = element_blank(), # 替换为panel_border,仅显示左侧和底部边框 panel.border = panel_border(left = TRUE, bottom = TRUE, colour = "black", size = .5), axis.text.x = element_blank(), axis.line.y = element_blank(), # 不再需要全局y轴线条 axis.line.x = element_blank(), # 不再需要全局x轴线条 strip.placement = "outside")
方法二:不依赖额外包,手动指定轴线条
如果你不想安装额外包,可以通过设置每个面板的底部x轴线条和左侧y轴线条来实现效果,同时去掉全局的panel.border:
ggplot(df,aes(x=x,y=y)) + facet_grid(group.a~group.b) + theme_minimal() + theme(legend.position = "bottom", legend.title = element_blank(), legend.direction = "horizontal", legend.margin = margin(-20,0,0,0), panel.grid = element_blank(), panel.border = element_blank(), # 移除四边边框 # 显示每个面板的底部x轴线条 axis.line.x.bottom = element_line(size = .5, color = "black"), # 显示每个面板的左侧y轴线条 axis.line.y.left = element_line(size = .5, color = "black"), axis.text.x = element_blank(), strip.placement = "outside")
两种方法都能达到你想要的效果:仅在每个分面面板的底部和左侧显示黑色边框,同时隐藏顶部和右侧的边框。
内容的提问来源于stack exchange,提问作者Jeff238
相关产品推荐
相关产品推荐

