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

如何使用ggplot2不借助facet_wrap()复刻多面板折线图?

不用facet_wrap()复刻多面板折线图的解决方案

要复刻目标图表但不能用facet_wrap(),核心思路是为每个产品单独生成图表,再手动拼接成多面板布局。下面用patchwork包(比gridExtra更简洁)来实现:

步骤1:加载依赖包和数据

library(tidyverse)
library(patchwork) # 用于拼接图表

# 原数据保持不变
df <- tibble(
    produto = c(
        rep("Produto A", 3),
        rep("Produto B", 3),
        rep("Produto C", 2),
        rep("Produto D", 2),
        rep("Produto E", 2)
    ),
    ano = c(2008, 2010, 2014,
            2008, 2010, 2014,
            2010, 2014,
            2011, 2014,
            2013, 2014),
    preco = c(400, 300, 280,
              420, 310, 290,
              200, 230,
              210, 220,
              180, 250)
)

步骤2:写一个批量生成单产品图表的函数

这个函数会自动筛选对应产品的数据,设置x轴仅显示该产品存在的年份,同时统一图表样式:

create_single_plot <- function(prod_name) {
  prod_data <- df %>% filter(produto == prod_name)
  
  ggplot(prod_data, aes(x = ano, y = preco, group = produto)) +
    geom_line(linewidth = 1) +
    geom_point(size = 2) +
    geom_text(aes(label = ano), vjust = -1.2, size = 3) +
    # 只显示当前产品的年份,实现x轴自由缩放
    scale_x_continuous(limits = range(prod_data$ano), breaks = prod_data$ano) +
    scale_y_continuous(labels = scales::dollar_format(prefix = "$")) +
    labs(title = prod_name, x = NULL, y = NULL) +
    theme_minimal(base_size = 12) +
    theme(
      plot.title = element_text(face = "bold"),
      panel.grid.minor = element_blank()
    )
}

步骤3:生成所有产品的图表并拼接

用patchwork的语法快速组合布局,还能统一添加总标题:

# 生成每个产品的单独图表
plot_a <- create_single_plot("Produto A")
plot_b <- create_single_plot("Produto B")
plot_c <- create_single_plot("Produto C")
plot_d <- create_single_plot("Produto D")
plot_e <- create_single_plot("Produto E")

# 拼接成和facet_wrap一致的布局(2行:第一行2个,第二行3个)
(plot_a + plot_b) / (plot_c + plot_d + plot_e) +
  plot_annotation(
    title = "Preço Médio do Produto no Varejo por Ano",
    theme = theme(plot.title = element_text(size = 14, face = "bold"))
  )

这个方案完全避开了facet_wrap(),最终效果和你用分面生成的图表几乎一致,同时保留了每个面板x轴自由缩放的特性。

内容的提问来源于stack exchange,提问作者Laura

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 14:14:58