📜  在 R 中使用 ggplot2 进行时间序列可视化

📅  最后修改于: 2022-05-13 01:55:41.500000             🧑  作者: Mango

在 R 中使用 ggplot2 进行时间序列可视化

在本文中,我们将讨论使用 R 编程语言中的 ggplot2 包进行时间序列可视化。

时间序列是在订单时间线中列出的一系列数据点,即日期、年份或月份形式的轴之一。时间序列是一系列连续的等间隔时间点。时间序列分析包括分析时间序列数据的方法,以从数据中检索一些有意义的洞察力。时间序列数据分析在金融行业、制药、社交媒体公司、网络服务提供商、研究等众多行业中变得非常重要,因为它有助于根据过去数据的趋势预测未来事件。

为了更好地了解数据,我们需要一些工具来可视化它。 R 编程语言在 ggplot2 包中提供了强大的工具来可视化数据。我们可以使用 geom_line()函数使用折线图来可视化时间序列数据。

示例:描述时间序列数据的基本折线图。

使用中的数据框:这里

R
# load library ggplot2
library(ggplot2)
  
# create timeseries dataframe
dataframe <- data.frame(read.csv("sample2.csv"))
  
# create plot
ggplot(dataframe, aes(x=Date, y=High, group = 1)) +
  geom_line()+
# check.overlap avoids label overlapping
scale_x_discrete(guide = guide_axis(check.overlap = TRUE))


R
# load library ggplot2
library(ggplot2)
  
# create timeseries dataframe
dataframe <- data.frame(
                      Date = as.Date("2021-10-21") - 0:364,
                      High = runif(365) + seq(-140, 224)^2 / 10000)
  
# create plot
ggplot(dataframe, aes(x=Date, y=High, group = 1)) +
  geom_line()+
  
# check.overlap avoids label overlapping
scale_x_discrete(guide = guide_axis(check.overlap = TRUE))+
  
# change month format to long-form month
scale_x_date(date_labels = "%B")


R
# load library ggplot2
library(ggplot2)
  
# create timeseries dataframe
dataframe <- data.frame(
                      Date = as.Date("2021-10-21") - 0:364,
                      High = runif(365) + seq(-140, 224)^3 / 10000)
  
# create plot
ggplot(dataframe, aes(x=Date, y=High, group = 1)) +
  geom_line()+
  
# check.overlap avoids label overlapping
scale_x_discrete(guide = guide_axis(check.overlap = TRUE))+
  
# change month format to long-form month
# date_breaks and date_minor_breaks for axis break
scale_x_date(date_labels = "%B",date_breaks = "1 week")


R
# load library ggplot2
library(ggplot2)
  
# create timeseries dataframe
dataframe <- data.frame(
                      Date = as.Date("2021-10-21") - 0:364,
                      High = runif(365) + seq(-140, 224)^2 / 10000)
  
# create plot
ggplot(dataframe, aes(x=Date, y=High, group = 1)) +
  geom_line()+
  
# check.overlap avoids label overlapping
scale_x_discrete(guide = guide_axis(check.overlap = TRUE))+
  
# limit axis data
scale_x_date(limit=c(as.Date("2021-09-01"),as.Date("2021-10-21")))


输出:

数据标签格式

由于其中一个轴数据是日期形式的,我们可以将其格式化为多种日期形式。我们可以使用 scale_x_date()函数来选择 X 轴上显示的格式。

句法:

在这里,日期格式标识符是:

IdentifiersExplanationExample
%dday as a number21
%ashort-form weekdayMon
%Along-form weekdayMonday
%mmonth as number10
%bshort-form monthOct
%Blong-form monthOctober
%y2 digit year21
%Y4 digit year2021

示例:使用数据标签标识符以长格式仅显示月份的时间序列。

R

# load library ggplot2
library(ggplot2)
  
# create timeseries dataframe
dataframe <- data.frame(
                      Date = as.Date("2021-10-21") - 0:364,
                      High = runif(365) + seq(-140, 224)^2 / 10000)
  
# create plot
ggplot(dataframe, aes(x=Date, y=High, group = 1)) +
  geom_line()+
  
# check.overlap avoids label overlapping
scale_x_discrete(guide = guide_axis(check.overlap = TRUE))+
  
# change month format to long-form month
scale_x_date(date_labels = "%B")

输出:

休息和小休息

我们可以使用 ggplot2 的 scale_x_date()函数的 date_breaks 和 date_minor_breaks 参数在图中使用次要或主要中断来创建不同的断点。

句法:

示例:具有手动日期中断和次要日期中断的基本时间序列图。

R

# load library ggplot2
library(ggplot2)
  
# create timeseries dataframe
dataframe <- data.frame(
                      Date = as.Date("2021-10-21") - 0:364,
                      High = runif(365) + seq(-140, 224)^3 / 10000)
  
# create plot
ggplot(dataframe, aes(x=Date, y=High, group = 1)) +
  geom_line()+
  
# check.overlap avoids label overlapping
scale_x_discrete(guide = guide_axis(check.overlap = TRUE))+
  
# change month format to long-form month
# date_breaks and date_minor_breaks for axis break
scale_x_date(date_labels = "%B",date_breaks = "1 week")

输出:

限制轴数据

在处理大型数据集时,我们可能需要关注一个小的时间范围。为此,我们使用 scale_x_date()函数的限制选项来选择数据中的时间范围。

句法:

示例: 2021 年 10 月至 2021 年 7 月数据有限的地块。

R

# load library ggplot2
library(ggplot2)
  
# create timeseries dataframe
dataframe <- data.frame(
                      Date = as.Date("2021-10-21") - 0:364,
                      High = runif(365) + seq(-140, 224)^2 / 10000)
  
# create plot
ggplot(dataframe, aes(x=Date, y=High, group = 1)) +
  geom_line()+
  
# check.overlap avoids label overlapping
scale_x_discrete(guide = guide_axis(check.overlap = TRUE))+
  
# limit axis data
scale_x_date(limit=c(as.Date("2021-09-01"),as.Date("2021-10-21")))

输出: