R语言ggplot如何合并不同X轴、含分类变量的分面点图
实现方法
你可以使用patchwork包直接拼接两个独立的ggplot对象,操作逻辑最简单,不需要大幅调整原有代码:
步骤1:加载依赖包、预处理基础数据
library(ggplot2) library(patchwork) data(Salaries, package = "carData") # 预处理公共数据 Salaries <- Salaries[1:15,] Salaries$name <- c("Jim","Alex","Ray","Dog","Kim", "Michael","Mike","Adrian","Claire","Lucy", "Fray","Lucas","Crraig","Anthony","Harper")
步骤2:分别生成两个图表对象,存储为变量
# 毕业年限维度图表 p1 <- ggplot(Salaries, aes(x = yrs.since.phd , y=reorder(name, yrs.since.phd)))+ geom_point(size = 3, aes(colour = sex))+ facet_grid(rows = vars(sex), scales = "free_y" ,space = "free_y")+ theme(legend.position = "none", axis.title.y = element_blank()) # 隐藏重复的y轴标题 # 薪资维度图表 p2 <- ggplot(Salaries, aes(x = salary , y=reorder(name, salary)))+ geom_point(size = 3, aes(colour = sex))+ facet_grid(rows = vars(sex), scales = "free_y" ,space = "free_y")+ theme(legend.position = "none", axis.text.y = element_blank(), # 隐藏重复的y轴刻度文字 axis.ticks.y = element_blank()) # 隐藏重复的y轴刻度线
步骤3:拼接图表
# 横向拼接,可通过widths参数调整两个子图的宽度比例 p1 + p2 + plot_layout(widths = c(1, 1.2))
如果需要对合并后的图表做统一的标题、图例调整,可以在拼接后添加全局主题参数即可。
内容的提问来源于stack exchange,提问作者Mathica
相关产品推荐
相关产品推荐

