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

如何在R语言中复现图表下方含年龄最值与中位数的数值线

问题

我想要复现的数值线包含幼龟(juveniles)、雌性(females)和雄性(males)年龄的最小值(min)、中位数(median)和最大值(max)。现有绘图代码如下:

original_plot <- ggplot(turtle2011, aes(x = Zage1, y = Agglut, shape = Sex)) +
geom_point() +
geom_smooth(method = "lm", se = FALSE, color = "red") +  # 添加回归线
labs(x = "Zage", y = "天然抗体") +  # 设置坐标轴标签
scale_shape_manual(values = c(1, 17, 15)) +  # 自定义各性别对应的形状
theme_minimal()  # 设置绘图主题

请问如何基于此在R语言中复现图表下方的该数值线?

解决方案

要在现有ggplot2图表下方添加展示不同性别群体年龄统计值的数值线,按以下步骤操作即可:

  • 第一步:计算分组统计数据
    先从原数据框turtle2011中按Sex分组,提取每组年龄(Zage1)的min、median、max:

    library(dplyr)
    age_stats <- turtle2011 %>%
      group_by(Sex) %>%
      summarize(
        min_age = min(Zage1, na.rm = TRUE),
        median_age = median(Zage1, na.rm = TRUE),
        max_age = max(Zage1, na.rm = TRUE)
      )
    

    若Sex列的类别名称不是"juveniles"/"females"/"males",需先统一名称;顺序不对的话,用factor调整:

    age_stats$Sex <- factor(age_stats$Sex, levels = c("juveniles", "females", "males"))
    
  • 第二步:绘制数值线子图
    单独绘制展示统计值的数值线,用线段连接min和max,用点标记三个统计值:

    stats_plot <- ggplot(age_stats, aes(x = min_age, xend = max_age, y = Sex, yend = Sex)) +
      geom_segment(size = 1) +  # 绘制min到max的横线
      geom_point(aes(x = min_age), shape = 19, size = 3) +  # 标记最小值
      geom_point(aes(x = median_age), shape = 18, size = 4, color = "red") +  # 红色标记中位数
      geom_point(aes(x = max_age), shape = 19, size = 3) +  # 标记最大值
      labs(x = "Zage", y = "") +
      theme_minimal() +
      theme(
        axis.text.y = element_blank(),
        axis.title.y = element_blank(),
        plot.margin = margin(t = -10, r = 0, b = 0, l = 0)  # 缩小上边距,让子图和主图贴合
      )
    
  • 第三步:拼接主图和子图
    使用patchwork包将两张图垂直拼接,调整高度比例让布局更协调:

    library(patchwork)
    combined_plot <- original_plot / stats_plot + plot_layout(heights = c(4, 1))
    print(combined_plot)
    

这样就能得到主图下方带有目标数值线的完整图表。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 06:02:49