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

R语言ggplot使用geom_line绘制分组折线图点未连接问题求助

问题修复方案

导致该问题的常见原因及解决步骤如下:

  1. 先检查数据字段类型和分布
    运行以下代码查看数据结构:
str(annual)

需要确认两个核心字段的状态:

  • Total字段是否为数值型:如果读入时带千位分隔符等特殊符号,会被识别为字符/因子类型,ggplot无法按连续数值绘制跨年份连线
  • 确认每个Offence Category+Year组合下是否只有1条Total记录:如果同一个分组同一个年份有多条数据,geom_line会先绘制同x值下的垂直连线,无法生成跨年份的连续折线
  1. 对应修复代码

情况1:Total为非数值型

先清洗Total字段再绘图:

# 去除千位分隔符后转换为数值格式
annual$Total <- as.numeric(gsub(",", "", annual$Total))

# 绘图,新增color映射区分不同类别的折线
ggplot(data = annual, aes(x = as.numeric(as.character(Year)), y = Total, group = `Offence Category`, color = `Offence Category`)) +
  geom_line(linewidth = 1)

注:如果Year本身是因子类型,需要先转成字符再转数值,避免因子编码替代实际年份值导致x轴错乱

情况2:同分组同年份存在多条记录

先聚合汇总再绘图:

library(dplyr)
# 按年份和犯罪类别聚合求和,处理重复值
annual_agg <- annual %>%
  group_by(Year, `Offence Category`) %>%
  summarise(Total = sum(Total, na.rm = TRUE), .groups = "drop")

# 基于聚合后的数据绘图
ggplot(data = annual_agg, aes(x = as.numeric(as.character(Year)), y = Total, group = `Offence Category`, color = `Offence Category`)) +
  geom_line(linewidth = 1)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 16:45:03