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

如何在R的ggplot2中为不同站点分别使用geom_smooth与geom_line绘图?

解决方案

要实现部分站点用geom_smooth、其余用geom_line,核心是给每个几何对象单独指定对应的数据子集,具体操作如下:

  1. 先定义需要应用平滑曲线的站点列表(替换成你实际需要的站点名称):
smooth_stations <- c("站点1", "站点2") # 示例站点,自行修改为你的目标站点
  1. 修改ggplot代码,给每个geom图层分别传入筛选后的数据:
ggplot(data=StationsData, aes(x=Time, y=Temp, colour=Station))+ 
  # 仅对指定站点绘制平滑曲线
  geom_smooth(data = subset(StationsData, Station %in% smooth_stations), se = FALSE)+
  # 对剩余站点绘制折线
  geom_line(data = subset(StationsData, !Station %in% smooth_stations))+
  scale_color_brewer(palette = "Set1")+
  labs(x="Time (Months)", y="Temperature (ºC)", title= "Temperature")

关键说明

  • 每个geom图层都支持通过data参数单独设置数据源,用subset()函数筛选符合条件的站点;
  • %in%用于判断站点是否在目标列表中,!表示取反,即筛选不在目标列表里的站点;
  • geom_smooth的se=FALSE是关闭置信区间显示,若需要保留可删除该参数。

如果你的环境中已加载dplyr包,也可以用filter()替代subset(),写法更简洁:

geom_smooth(data = dplyr::filter(StationsData, Station %in% smooth_stations), se = FALSE)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 08:35:29