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

R语言基于HighCat与Decade列统计并绘制飓风分类折线图问题

问题修正方案

错误原因分析

  1. 列名大小写不匹配:原始数据列名为Decade,但代码分组时误用DECADE,导致统计逻辑失效。
  2. 数据源错误:绘图时使用原始数据tracks,而该数据中storm_cnt全为NA,无法生成有效图形,应使用统计后的tracks_decade。
  3. 折线图映射逻辑错误:原代码将数量storm_cnt设为x轴、飓风类别HighCat设为y轴,且每个类别在单一年代仅一个数据点,折线图无法形成连续线条。

修正后的代码

第一步:正确统计各年代飓风类别数量

library(dplyr)
library(tidyr)  # 用于补全缺失组合(可选)
library(ggplot2)

# 按飓风类别+年代分组统计数量,同时取消分组
tracks_decade <- tracks %>% 
  group_by(HighCat, Decade) %>% 
  summarize(storm_cnt = n(), .groups = "drop")

方案1:用柱状图展示(更适合单类别数量展示)

如果你的需求是按年代拆分面板,展示每个年代下各飓风类别的数量,柱状图比折线图更直观:

ggplot(tracks_decade) + 
  geom_col(aes(x = HighCat, y = storm_cnt, fill = HighCat)) +
  facet_wrap(vars(Decade), ncol = 1) +
  labs(x = "飓风类别", y = "数量", title = "各年代飓风类别数量统计")

方案2:用折线图展示(适合看类别数量随年代的变化)

如果需要用折线图展示每个飓风类别在不同年代的数量变化,需先补全缺失的类别-年代组合(避免折线断裂):

# 补全所有飓风类别在三个年代的记录,缺失的数量填0
tracks_decade_full <- tracks_decade %>%
  complete(HighCat, Decade, fill = list(storm_cnt = 0))

# 绘制折线图,每个类别一条线
ggplot(tracks_decade_full) + 
  geom_line(aes(x = Decade, y = storm_cnt, color = HighCat, group = HighCat)) +
  geom_point(aes(x = Decade, y = storm_cnt, color = HighCat)) +  # 增加数据点提升可读性
  labs(x = "年代", y = "数量", title = "各飓风类别数量随年代变化")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 10:51:35