R语言ggplot2使用geom_line绘制时间序列折线图显示异常如何解决
问题原因
你当前的代码没有指定折线的分组规则,ggplot2默认会将所有观测值按x轴的顺序直接串联,不会自动按照Pixel维度拆分出3条独立的折线,这就是你得到异常杂乱折线的核心原因。另外你数据中的day列目前是字符格式,还可能出现x轴日期顺序错乱的问题。
修复步骤
只需要做两处修改即可得到预期效果:
- 先将day列转换为标准日期格式,保证x轴按时间顺序排列
- 在ggplot的美学映射中添加分组参数,指定按Pixel拆分折线,也可以直接用颜色映射同时实现分组和不同Pixel的配色区分
完整修复代码
library(tidyverse) library(lubridate) # 预处理:转换日期格式,你数据的日期格式是日/月/年,用dmy函数解析 df <- df %>% mutate(day = dmy(day)) # 绘图代码 ggplot(data = df, aes(x = day, y = value, group = Pixel, color = factor(Pixel))) + geom_line() + xlab("") + labs(color = "Pixel编号") # 可选,修改图例显示名称
补充说明
如果你不需要给不同Pixel的折线加颜色区分,只需要保留group = Pixel参数、删除color = factor(Pixel)即可。如果你的数据中存在同一个Pixel同一天有多个value的情况,建议先按Pixel和日期做均值/求和聚合后再绘图,避免出现不必要的折线波动。
内容的提问来源于stack exchange,提问作者Ed_Gravy
相关产品推荐
相关产品推荐

