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

使用ggplot绘制散点图时如何对同一变量不同年份子集索引绘图

错误原因

ggplot()的aes()参数要求映射的变量长度和传入的数据集行数完全匹配,你直接在aes()内对tmax取年份索引,得到的是长度为12的向量,和原数据集行数不匹配,因此运行报错。另外原代码最后一行多了一个多余的右括号,也会触发语法错误。

修复方案

方案1(推荐):先整理数据为宽表再绘图

这种方法符合tidyverse的绘图逻辑,后续加标签、调整样式更方便:

library(tidyverse)

# 提取两年数据,整理为「一行对应一个月份,两列存对应年份tmax」的宽表
plot_data <- HeathrowData %>%
  filter(Year %in% c(2018, 2019)) %>%
  select(Year, Month, tmax) %>%
  pivot_wider(names_from = Year, values_from = tmax, names_prefix = "tmax_")

# 绘制散点图
ggplot(plot_data, aes(x = tmax_2018, y = tmax_2019)) +
  geom_point(size = 2) +
  labs(x = "2018", y = "2019")

方案2:直接提取向量绘图

如果不需要保留中间数据,也可以直接提取两年的tmax向量传入绘图函数:

# 分别提取两年的tmax数据
tmax_2018 <- HeathrowData$tmax[HeathrowData$Year == 2018]
tmax_2019 <- HeathrowData$tmax[HeathrowData$Year == 2019]

# 绘图时不绑定全局数据集,直接在aes中传入提取好的向量
ggplot() +
  geom_point(aes(x = tmax_2018, y = tmax_2019), size = 2) +
  labs(x = "2018", y = "2019")
效果示例

效果示例图

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 01:57:04