如何在 r 中绘制时间序列(附示例)
通常,您可能希望在 R 中绘制时间序列,以可视化时间序列中的值如何随时间变化。
本教程介绍如何使用ggplot2数据可视化库快速完成此操作。
R 中的基本时间序列绘图
假设我们在 R 中有以下数据集:
#create dataset df <- data.frame(date = as . Date (" 2021-01-01 ") - 0:99, sales = runif (100, 10, 500) + seq (50, 149)^2) #view first six rows head(df) dirty date 1 2021-01-01 2845.506 2 2020-12-31 2837.849 3 2020-12-30 3115.517 4 2020-12-29 2847.161 5 2020-12-28 3374.619 6 2020-12-27 3182.005
我们可以使用以下代码使用 ggplot2 创建该数据集的基本时间序列图:
library (ggplot2) #create time series plot p <- ggplot(df, aes (x=date, y=sales)) + geom_line() #display time series plot p
设置 X 轴上日期的格式
我们可以使用scale_x_date() *函数来格式化沿绘图x轴显示的日期。该函数采用以下参数:
- %d:日期为 0 到 31 之间的数字
- %a:缩写工作日(例如“Tue”)
- %A:一周中未缩写的日期(例如“Tuesday”)
- %m :0 到 12 之间的月份
- %b:月份缩写(例如“Jan”)
- %B:未缩写的月份(例如“January”)
- %y: 2 位数年份(例如“21”)
- %Y: 4 位数年份(例如“2021”)
- %W:一年中的第几周,介于 0 和 52 之间
*为了使该函数正常工作,x 轴变量必须是日期变量。如果还没有,您可以使用as.Date( variable_name)快速将其转换为日期。
以下代码显示了如何在实践中使用这些格式之一:
p + scale_x_date ( date_labels = " %b %Y ")
您还可以使用date_breaks参数沿 x 轴添加更频繁(或不频繁)的中断。例如,我们可以沿 x 轴每两周显示一次日期:
p + scale_x_date ( date_breaks = " 2 week ")
我们还可以使用以下参数轻松倾斜 x 轴标签:
p + theme ( axis.text.x = element_text (angle= 50 , hjust= 1 ))
最后,我们可以更改主题、轴标签和标题,以使时间序列图更具视觉吸引力:
p <- ggplot(df, aes (x=date, y=sales)) + geom_line( color =" turquoise4 ") + theme_minimal() + labs(x="", y=" Sales ", title=" Total Sales (Past 100 Days) ") + theme( plot.title = element_text (hjust=0.5, size=20, face=" bold ")) p