如何在R中绘制包含Score1、Score2两个变量的时间序列图
R绘制Score1、Score2双指标时间序列图操作步骤
第一步:数据预处理(时间格式转换)
首先需要把数据集中的DT列从字符串转为R可识别的时间格式,避免后续绘图把时间当普通分类文本处理。
# 构造示例数据集,如果你已经读入数据可跳过这一段 df <- data.frame( DT = c("12-01-21 1:30", "12-02-22 1:30", "12-12-21 1:30", "01-01-22 12:30", "03-02-22 1:00", "03-02-22 1:14"), Score1 = c(1,5,1,0,3,4), Score2 = c(4,4,4,3,1,1) ) # 转换时间格式,%m对应月、%d对应日、%y对应两位年、%H对应小时、%M对应分钟 df$DT <- as.POSIXct(df$DT, format = "%m-%d-%y %H:%M") # 可选:按时间升序排序,避免原数据时间顺序混乱导致折线错位 df <- df[order(df$DT), ]
方法1:基础R绘图(无需额外安装包)
直接用R内置的绘图函数快速出图:
# 绘制Score1折线,先确定坐标轴范围覆盖两个指标的数值区间 plot(df$DT, df$Score1, type = "l", col = "#2c3e50", lwd = 2, xlab = "时间", ylab = "得分", main = "双指标时间序列趋势") # 叠加Score2折线 lines(df$DT, df$Score2, col = "#e74c3c", lwd = 2) # 添加图例 legend("topright", legend = c("Score1", "Score2"), col = c("#2c3e50", "#e74c3c"), lwd = 2)
方法2:ggplot2绘图(样式更灵活,推荐)
如果未安装ggplot2先运行install.packages("ggplot2")安装,再加载使用:
library(ggplot2) ggplot(df, aes(x = DT)) + geom_line(aes(y = Score1, color = "Score1"), linewidth = 1) + geom_line(aes(y = Score2, color = "Score2"), linewidth = 1) + labs( x = "时间", y = "得分", title = "Score1与Score2时间序列变化", color = "指标类型" ) + scale_color_manual(values = c("Score1" = "#2c3e50", "Score2" = "#e74c3c")) + theme_bw()
常见问题注意
- 如果时间格式转换后出现NA值,检查
as.POSIXct里的format参数是否和你的DT列格式完全匹配,比如年是四位的话要把%y改成%Y - 如果需要给折线添加数据标记,可以在
geom_line后加geom_point层对应指标的y值
内容的提问来源于stack exchange,提问作者tech bitz
相关产品推荐
相关产品推荐

