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

在R中绘制美国各州英语测试分数随时间的散点连线图

数据集整理+ggplot绘图解决方案

一、数据整理(完全不损坏原数据)

你担心转长格式会弄坏数据完全没必要——我们会生成新的数据框,原数据集School_data会保持原样。步骤如下:

  • 先筛选出仅英语(ela)的记录,减少冗余计算
  • 把2016-2023这些年份列转成长格式,方便ggplot识别
  • 将年份转为数值型,保证X轴按时间顺序排列
  • 挑选你需要的5个州(示例用CA、NY、TX、FL、IL,可自行替换)
# 加载tidyverse工具包(包含dplyr和tidyr)
library(tidyverse)

# 生成整理后的新数据框
clean_data <- School_data %>%
  filter(subject == "ela") %>% # 只保留英语分数数据
  pivot_longer(
    cols = starts_with("20"), # 匹配所有以20开头的年份列
    names_to = "year", # 新列:存储年份
    values_to = "score" # 新列:对应年份的分数
  ) %>%
  mutate(year = as.numeric(year)) %>% # 把年份转成数值型,方便绘图排序
  filter(State %in% c("CA", "NY", "TX", "FL", "IL")) # 选5个目标州

二、绘图代码(散点+连线+可选趋势线)

用整理好的长格式数据,直接按年份、分数、州分组绘图即可:

ggplot(clean_data, aes(x = year, y = score, color = State, group = State)) +
  geom_point(size = 2, alpha = 0.7) + # 散点:控制大小和透明度
  geom_line(linewidth = 1) + # 点间连线控制粗细
  # 可选:添加线性趋势线(不需要就删掉这行)
  stat_smooth(method = "lm", se = FALSE, linetype = "dashed") +
  # 自定义标签
  labs(
    title = "各州英语测试分数年度变化",
    x = "年份",
    y = "平均分数",
    color = "州"
  ) +
  scale_color_brewer(palette = "Set1") + # 配色方案,可替换成你喜欢的
  theme_bw() + # 简洁清爽的主题
  theme(plot.title = element_text(hjust = 0.5)) # 标题居中

你之前代码的问题

之前的错误在于直接把年份列当成x/y轴参数,ggplot需要长格式数据才能按年份和州进行分组映射——转长格式是这类时间序列分组绘图的标准流程,完全安全。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 22:27:27