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

如何在ggplot分面图中添加MRJ虚线且不生成MRJ分面?

解决方案

数据与预处理代码

cmf <- data.frame(
  apresid = c("1.0", "2.1", "2.2", "3.1", "3.2", "3.3", "4.0", "5.1", "5.2", "5.3", "MRJ"),
  cmf12 = c(10.7, 7.1, 5.4, 11.3, 10.0, 9.3, 8.9, 10.7, 8.8, 11.4, 10.0),
  cmf13 = c(8.8, 4.9, 7.9, 10.3, 10.7, 9.3, 6.9, 10.4, 8.5, 8.5, 9.3),
  cmf14 = c(10.2, 4.4, 4.1, 10.3, 9.0, 9.7, 7.9, 11.6, 9.3, 10.1, 9.5),
  cmf15 = c(11.0, 6.1, 6.7, 8.7, 9.0, 11.2, 9.1, 9.2, 8.9, 12.8, 9.2),
  cmf16 = c(7.4, 6.2, 6.6, 9.4, 9.1, 8.9, 9.8, 10.8, 6.5, 8.6, 8.7),
  cmf17 = c(10.7, 7.2, 7.0, 9.2, 7.1, 11.5, 8.9, 10.6, 8.8, 7.3, 9.0),
  cmf18 = c(11.6, 5.8, 7.3, 10.1, 7.9, 12.4, 8.8, 11.2, 9.7, 8.9, 9.3),
  cmf19 = c(10.6, 8.9, 11.0, 11.5, 8.5, 10.4, 7.7, 12.5, 10.3, 13.8, 10.9),
  cmf20 = c(13.7, 8.2, 7.3, 12.7, 10.6, 10.6, 7.4, 11.2, 12.0, 12.7, 10.4),
  cmf21 = c(11.7, 8.7, 7.3, 11.7, 9.1, 10.0, 8.4, 11.2, 12.8, 13.5, 10.1),
  cmf22 = c(10.7, 4.0, 9.1, 10.0, 11.9, 10.0, 8.4, 10.3, 9.8, 9.7, 8.4),
  cmf23 = c(9.6, 7.0, 7.0, 9.8, 8.9, 7.9, 6.5, 10.3, 9.8, 9.8, 8.9),
  cmf24 = c(6.5, 4.3, 6.5, 8.7, 9.0, 9.4, 10.2, 8.0, 7.8, 9.2, 8.9),
  cmf25 = c(7.4, 10.6, 15.4, 14.7, 10.6, 10.6, 5.4, 8.0, 7.9, 8.7, 8.6)
)

cmf_long <- cmf %>%
  pivot_longer(cols = starts_with("cmf"), names_to = "ano", values_to = "cmf") %>%
  mutate(ano = as.numeric(gsub("cmf", "", ano)) + 2000) %>%
  mutate(ano = as.character(ano))

修改后的绘图代码

# 拆分主数据(排除MRJ)和参考线数据(仅MRJ)
main_data <- cmf_long %>% filter(apresid != "MRJ")
mrj_data <- cmf_long %>% filter(apresid == "MRJ")

ggplot(main_data, aes(x = ano, y = cmf, group = apresid)) +
  geom_line(color = "red", size = 2) +
  # MRJ数据无分面变量关联,会自动在所有分面渲染
  geom_line(data = mrj_data,
            aes(x = ano, y = cmf),
            linetype = "dashed", color = "black", size = 1) +
  facet_wrap(~apresid, scales = "fixed", ncol = 5) +
  ylim(0, 20) +
  labs(y = "胎儿死亡率系数/1000活产", x = NULL) +
  theme_minimal(base_size = 20) +
  theme(
    strip.background = element_rect(fill = "darkred"),
    strip.text = element_text(color = "white", face = "bold"),
    axis.text.x = element_text(angle = 45, hjust = 1),
    panel.grid.major = element_line(color = "gray", linetype = "dashed", size = 0.5)
  )

修改说明

  • 主数据过滤掉MRJ条目,确保分面仅生成其他apresid的图表
  • 单独提取MRJ数据作为参考线图层,由于该数据不绑定分面变量,ggplot会自动在所有分面中渲染这条黑色虚线,完全匹配需求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 19:54:51