You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 10:27:00