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

为什么我使用R的ggplot2绘制散点图时趋势线无法显示?

问题原因

你将color=Country放在了ggplot()的全局美学映射中,这会让所有图层默认按Country分组拟合趋势线。你提供的数据集里每个国家仅对应1条观测记录,而线性回归至少需要2个数据点才能完成拟合,因此趋势线无法生成显示。

解决方法

方案1:绘制全局总趋势线

如果只需要全数据集的一条整体趋势线,将color=Country从全局映射移到geom_point()的独立映射中,仅让散点按国家区分颜色即可:

ggplot(df_scatter, aes(x = new_cases, y = people_fully_vaccinated)) + 
  geom_point(aes(color = Country)) + 
  geom_smooth(method = "lm")
# 不需要显示置信区间可在geom_smooth中加参数 se = FALSE

方案2:绘制分国家的趋势线

如果需要每个国家对应的单独趋势线,你需要更换包含每个国家多条观测记录的明细数据集,当前的聚合数据集每个国家仅1条数据,无法实现分国家拟合。

可选优化:过滤异常值

数据中以色列对应的new_cases为负值属于异常值,若要避免其影响趋势线拟合效果,可先过滤异常值再绘图:

library(dplyr)
df_scatter %>% 
  filter(new_cases > 0) %>% 
  ggplot(aes(x = new_cases, y = people_fully_vaccinated)) + 
  geom_point(aes(color = Country)) + 
  geom_smooth(method = "lm")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 11:36:02