You need to enable JavaScript to run this app. R Studio使用ggplot2绘制多国新冠新增病例图Y轴数值异常求助
优惠活动
大模型
产品
解决方案
定价
更多

R Studio使用ggplot2绘制多国新冠新增病例图Y轴数值异常求助

问题原因

你遇到的Y轴数值异常问题,90%以上的概率是new_cases字段的类型异常导致:

  • 合并多个国家数据集时,不同子集的new_cases列类型不统一(比如部分是因子、部分是数值,或者部分字段带千分位逗号等非数字字符),rbind操作会强制把整列转为字符/因子类型,ggplot读取这类字段做Y轴时,会自动解析为因子对应的底层整数编码,最终出现远超实际值的异常范围。
  • 第二个常见诱因是列名大小写不匹配:样例数据中国家列名为大写开头的Location,但绘图代码的aes参数中用的是小写location,R大小写敏感,分组识别失败会导致绘图逻辑异常。

排查步骤

先运行以下代码确认问题点:

# 查看数据集各列的类型,确认new_cases是否为numeric/integer类型
str(new_cases)
# 查看new_cases列的实际最大值,确认数据本身是否存在异常值
max(new_cases$new_cases, na.rm = TRUE)

修复方案

步骤1:合并数据集前统一各子集的列名和字段类型

# 统一每个国家子集的列名和字段类型
process_country_df <- function(df) {
  # 国家列统一改为小写location,避免大小写问题
  colnames(df)[colnames(df) %in% c("Location", "country")] <- "location"
  # 新增病例列统一转为数值型,有非数字字符会自动转为NA
  df$new_cases <- as.numeric(as.character(df$new_cases))
  return(df)
}

China_Covid_newcases <- process_country_df(China_Covid_newcases)
Italy_Covid_newcases <- process_country_df(Italy_Covid_newcases)
France_Covid_newcases <- process_country_df(France_Covid_newcases)
Singapore_Covid_newcases <- process_country_df(Singapore_Covid_newcases)
Sweden_Covid_newcases <- process_country_df(Sweden_Covid_newcases)

# 再合并数据集
new_cases_allcountries <- rbind(China_Covid_newcases, Italy_Covid_newcases, France_Covid_newcases, Singapore_Covid_newcases, Sweden_Covid_newcases)

步骤2:优化日期过滤和绘图逻辑

# 日期转换、过滤逻辑
new_cases_allcountries$date <- as.Date(new_cases_allcountries$date, format = "%m-%d-%y")
new_cases <- new_cases_allcountries %>%
  filter(date >= as.Date('2020-03-14') & date <= as.Date('2020-12-01'),
         # 过滤掉NA和异常负值
         !is.na(new_cases), new_cases >= 0)

# 绘图时明确指定分组,避免识别异常
New_Cases_Graph <- ggplot(new_cases, aes(x = date, y = new_cases, colour = location, group = location)) +
  geom_line() +
  # 可选:手动设置Y轴从0开始,上限自动适配数据最大值
  scale_y_continuous(limits = c(0, NA))
New_Cases_Graph

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.22 02:36:02