如何在R中绘制时间序列并高亮缺失值
在R中绘制带缺失值的时间序列并高亮缺失值
首先构造你提供的示例数据框:
df <- data.frame( time = 1:5, Value = c(23, 12, NA, 18, NA) )
方法一:基础绘图系统
先绘制正常的时间序列,再单独标记缺失值的位置:
# 绘制非缺失值的时序线与实心点 plot(Value ~ time, data = df, type = "b", pch = 16, col = "blue", xlab = "Time", ylab = "Value", main = "高亮缺失值的时间序列") # 筛选缺失值对应的时间点,在y轴底部绘制红色空心圆标记 missing_pos <- df$time[is.na(df$Value)] points(missing_pos, rep(par("usr")[3], length(missing_pos)), pch = 1, col = "red", cex = 1.2)
par("usr")[3]会自动获取当前绘图y轴的下限,确保标记点在图表底部,不会和有效数据重叠。
方法二:使用ggplot2包
如果习惯用ggplot2,代码更直观:
library(ggplot2) ggplot(df, aes(x = time, y = Value)) + geom_line(color = "blue") + geom_point(data = subset(df, !is.na(Value)), color = "blue", size = 2) + # 在缺失值对应的时间点,用红色空心圆标记(位置设为比最小值低1) geom_point(data = subset(df, is.na(Value)), aes(y = min(Value, na.rm = TRUE) - 1), shape = 1, color = "red", size = 2) + labs(x = "Time", y = "Value", title = "高亮缺失值的时间序列") + theme_bw()
如果需要把缺失值标记在原本的y轴位置(比如数据中间),可以手动指定y值,比如根据你的数据范围设置为10或25,按需调整即可。
内容的提问来源于stack exchange,提问作者AKC
相关产品推荐
相关产品推荐

