Implement an R funtion to generate a line graph depictiong the trend of a time-series dataset, with separate lines for each group , utilizing ggplot2’s group aesthetic.
Introduction
This document demonstrates how to create a time-series line graph using the built-in Air passengers dataset in R .
The dataset contains monthly airline passenger counts from 1949 to 1960 .
We will convert the time-series object into a dataframe (because ggplot2 works best with dataframes).
We will viualize passenger trends over time using ggplot2.
We will draw separate lines for each year using the group aesthetic (and color for each comparison).
Step 1 : Load necessary libraries
We load : - ggplot2 to create the line plot . - dplyr for optional data handling (filtering , summarising , etc .). - tidyr for optional reshaping (not strictly required here, but commonly used in tidy workflows).
library(ggplot2)library(dplyr)
Attaching package: 'dplyr'
The following objects are masked from 'package:stats':
filter, lag
The following objects are masked from 'package:base':
intersect, setdiff, setequal, union
library(tidyr)
Step 2: Load the built-in Air passengers dataset and convert it to a dataframe
Why Convert ?
AirPassengers is a time-series (ts) object , not a dataframe .
ggplot2 expects data in a tabular structure
So we build a dataframe with :
Date : a sequence of monthly dates from 1949 to 1960.
Passengers : the numeric values from the time-series
Year: extracted from the date , used as the groupvariable(factor)
# Create a monthly data sequence that matches AirPassengers length date_seq <-seq (as.Date("1949-01-01"),by ="month",length.out =length(AirPassengers) )# Convert the time-series object into a dataframe for ggplot2 data <-data.frame(Date = date_seq,Passengers =as.numeric(AirPassengers),Year =as.factor(format(date_seq , "%Y")) )# Display first few rowshead(data , n=20)
plot_time_series( data,"Date","Passengers","Year","Trends of Air Passengers Over time")
Warning: `aes_string()` was deprecated in ggplot2 3.0.0.
ℹ Please use tidy evaluation idioms with `aes()`.
ℹ See also `vignette("ggplot2-in-packages")` for more information.
Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
ℹ Please use `linewidth` instead.