1 + 1[1] 2
Quarto enables you to weave together content and executable code into a finished document. To learn more about Quarto see https://quarto.org.
When you click the Render button a document will be generated that includes both content and the output of embedded code. You can embed code like this:
1 + 1[1] 2
You can add options to executable code like this
[1] 4
The echo: false option disables the printing of code (only output is displayed).
Implement an R function to generate a line graph depicting the trend of a time-series dataset, with separate lines for each group, utilizing ggplot2’s group aesthetic.
This document demonstrates how to create a time-series line graph using the built-in AirPassengers dataset in R.
The dataset contains monthly airline passenger counts from 1949 to 1960. We will use ggplot2 to visualize trends, with separate lines for each year.
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)AirPassengers DatasetThe AirPassengers dataset is a time series object in R.
We first convert it into a dataframe to use it with ggplot2.
Date: Represents the month and year (from January 1949 to December 1960).
Passengers: Monthly airline passenger counts.
Year: Extracted year from the date column, which will be used to group the data.
# Convert time-series data to a dataframe
data <- data.frame(
Date = seq(as.Date("1949-01-01"), by = "month", length.out = length(AirPassengers)),
Passengers = as.numeric(AirPassengers),
Year = as.factor(format(seq(as.Date("1949-01-01"), by = "month", length.out = length(AirPassengers)), "%Y"))
)
# Display first few rows
head(data, n=20) Date Passengers Year
1 1949-01-01 112 1949
2 1949-02-01 118 1949
3 1949-03-01 132 1949
4 1949-04-01 129 1949
5 1949-05-01 121 1949
6 1949-06-01 135 1949
7 1949-07-01 148 1949
8 1949-08-01 148 1949
9 1949-09-01 136 1949
10 1949-10-01 119 1949
11 1949-11-01 104 1949
12 1949-12-01 118 1949
13 1950-01-01 115 1950
14 1950-02-01 126 1950
15 1950-03-01 141 1950
16 1950-04-01 135 1950
17 1950-05-01 125 1950
18 1950-06-01 149 1950
19 1950-07-01 170 1950
20 1950-08-01 170 1950
We define a function to create a time-series line graph where:
The x-axis represents time (Date).
The y-axis represents the number of passengers (Passengers).
Each year has a separate line to compare trends.
Function Inputs
data – The dataset containing time-series data.
x_col – The column representing time (Date).
y_col – The column representing values (Passengers).
group_col – The categorical variable for grouping (Year).
title – Custom plot title.
Features of the Line Graph
Each year has a distinct line color.
The group aesthetic ensures lines are drawn separately for each year.
Enhances readability with a clean layout.
Moves legend to the top for better visualization.
# Function to plot time-series trend
plot_time_series <- function(data, x_col, y_col, group_col, title="Air Passenger Trends") {
ggplot(data, aes_string(x = x_col, y = y_col, color = group_col, group = group_col)) +
geom_line(size = 1.2) + # Line graph
geom_point(size = 2) + # Add points for clarity
labs(title = title,
x = "Year",
y = "Number of Passengers",
color = "Year") + # Legend title
theme_minimal() +
theme(legend.position = "top")
}
# Call the function
plot_time_series(data, "Date", "Passengers", "Year", "Trend of Airline 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.