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

如何用ggplot2在R中绘制单实体多字段的转置多折线图

绘制单实体多字段时序多折线图(匹兹堡EMS呼叫场景)

要实现单实体(匹兹堡)下多字段(不同EMS呼叫原因)的时序折线图,核心是将宽格式数据转换为长格式——这是和常规多实体折线图的本质区别。下面用你提供的tibble和工具包给出具体实现方案:

1. 数据重塑(宽转长)

你的当前数据是宽格式(每个呼叫原因对应一列),而ggplot2绘制多折线图需要长格式(一个列存储呼叫原因类别,一个列存储对应呼叫数量)。

方法1:用tidyverse的tidyr::pivot_longer(推荐,原生兼容tidyverse)

利用你已定义的vec_col.names指定需要转换的列:

library(tidyverse)

# 宽转长
df_long <- df_0 %>%
  pivot_longer(
    cols = all_of(vec_col.names),  # 用预定义的列名向量指定转换列
    names_to = "call_reason",      # 新列:存储呼叫原因类别
    values_to = "call_count"       # 新列:存储对应呼叫数量
  )

方法2:用reshape2的melt(你提到的工具包)

如果你更习惯用reshape2,也可以这样转换:

library(reshape2)

df_long <- melt(
  df_0,
  id.vars = c("City_name", "year_quarter"),  # 保留的非度量列
  measure.vars = vec_col.names,              # 需要转换的度量列
  variable.name = "call_reason",             # 类别列名
  value.name = "call_count"                  # 数值列名
)

转换后的长格式数据结构示例:

# A tibble: 24 × 4
   City_name  year_quarter call_reason    call_count
   <chr>      <chr>        <chr>               <dbl>
 1 PITTSBURGH 2015Q1       ABDOMINAL_PAIN        10
 2 PITTSBURGH 2015Q1       ALLERGIES             12
 3 PITTSBURGH 2015Q1       ASSAULT               14
 4 PITTSBURGH 2015Q1       BACK_PAIN             16
 ...

2. 绘制多折线图

用ggplot2绘制,按call_reason区分不同折线,year_quarter作为X轴,call_count作为Y轴:

ggplot(df_long, aes(x = year_quarter, y = call_count, color = call_reason, group = call_reason)) +
  geom_line(linewidth = 1) +  # 绘制折线,设置线宽
  geom_point(size = 2) +     # 添加数据点,增强可读性
  labs(
    title = "匹兹堡EMS不同呼叫原因季度数量变化",
    x = "季度",
    y = "呼叫数量",
    color = "呼叫原因"
  ) +
  theme_minimal() +  # 使用简洁主题
  theme(axis.text.x = element_text(angle = 45, hjust = 1))  # 旋转X轴标签避免重叠

3. 可选优化

  • 如果year_quarter需要按时间顺序排序,可以先将其转换为时间类型:
    df_long <- df_long %>%
      mutate(year_quarter = as.yearqtr(year_quarter, format = "%YQ%q"))
    
    这样X轴会自动按时间顺序排列,无需手动调整。
  • 可以自定义折线颜色,比如用scale_color_manual()指定颜色向量。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 14:50:55