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

在R语言中如何为geom_line多折线图添加分组(填充)标签?

问题描述

现有包含年份、媒体名称、两个关键词提及次数列的数据框,示例数据如下:

yearmedium_namen_transsexun_transgende
2012New York Times1522
2012Daily Mail1020
2013New York Times1012

尝试用以下ggplot代码绘制折线图,展示两个关键词的提及次数随时间的变化,并按媒体区分:

yeardf_medium %>%
  ggplot(aes(x=year, group = medium_name)) +
    geom_line(aes(y = n_transsexu, col = "transsexuell etc.")) +
    geom_line(aes(y = n_transgende, col = "transgender etc.")) +
    labs(title = "Nennung spezifischer Schlüsselwörter über Zeit (nach Medium)",
         subtitle = "transsexuell/Transsexualismus etc. vs. transgender/Transgenderismus etc",
         x = "Jahr",
         y = "Anzahl Nennungen")

当前图表仅能通过颜色区分两个关键词,无法区分不同媒体,也没有媒体分组的图例,需要解决如何同时展示媒体和关键词的图例。

解决方案

核心问题是当前数据为宽格式,无法同时将媒体和关键词类型映射到视觉属性(如颜色、线型)。需要先将数据转换为长格式,再调整ggplot的美学映射:

步骤1:转换数据格式

使用tidyr::pivot_longer将两个数值列合并为一列,同时新增一列标记关键词类型:

library(tidyr)
library(ggplot2)

# 转换为长格式
yeardf_long <- yeardf_medium %>%
  pivot_longer(
    cols = c(n_transsexu, n_transgende),  # 选择要转换的数值列
    names_to = "keyword_type",            # 新增列:标记关键词类型
    values_to = "count"                   # 新增列:存储提及次数
  ) %>%
  # 替换关键词类型的显示文本,与原代码保持一致
  mutate(keyword_type = case_when(
    keyword_type == "n_transsexu" ~ "transsexuell etc.",
    keyword_type == "n_transgende" ~ "transgender etc."
  ))

步骤2:绘制带双图例的折线图

在ggplot中,将medium_name映射到color(区分媒体),keyword_type映射到linetype(区分关键词),两个维度会自动生成对应的图例:

yeardf_long %>%
  ggplot(aes(x = year, y = count)) +
    geom_line(aes(color = medium_name, linetype = keyword_type), linewidth = 1) +
    labs(
      title = "Nennung spezifischer Schlüsselwörter über Zeit (nach Medium)",
      subtitle = "transsexuell/Transsexualismus etc. vs. transgender/Transgenderismus etc",
      x = "Jahr",
      y = "Anzahl Nennungen",
      color = "Medien",          # 媒体图例的标题
      linetype = "Schlüsselwort" # 关键词图例的标题
    ) +
    theme_minimal() # 可选:优化图表样式

说明

  • 转换长格式后,每一行对应一个媒体、年份、关键词类型的组合,ggplot可直接识别并分组绘图。
  • 若需要交换区分维度,只需把color和linetype的映射项互换即可(比如用颜色区分关键词,线型区分媒体)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 03:18:22