📜  R中带有ggplot2的多线图或时间序列图(1)

📅  最后修改于: 2023-12-03 15:19:53.904000             🧑  作者: Mango

R中带有ggplot2的多线图或时间序列图

介绍

ggplot2是一个常用的R语言数据可视化包,可以用来生成高质量的统计图形。ggplot2支持各种类型的图形,包括散点图、线图、条形图、箱线图,以及时间序列图等。

在本文中,将介绍如何使用ggplot2生成多线图和时间序列图。多线图适用于显示多组数据之间的趋势和变化,而时间序列图则适用于显示时间数据的趋势和周期性变化。

多线图
准备数据

首先,我们需要准备一些数据用于绘制多线图。这里我们使用R语言内置的datasets包中的economics数据集。

library(datasets)
data(economics)
head(economics)

输出结果:

        date pce     pop psavert uempmed unemploy
1 1967-07-01 507 198712     12.5     4.5     2944
2 1967-08-01 510 198911     12.5     4.7     2945
3 1967-09-01 516 199113     11.7     4.6     2958
4 1967-10-01 512 199311     12.5     4.9     3143
5 1967-11-01 517 199498     12.5     4.7     3066
6 1967-12-01 525 199657     12.1     4.8     3018

这个数据集包含从1967年7月到2015年2月的美国经济数据,包括个人消费支出(pce)、人口(pop)、个人储蓄率(psavert)、失业中位数(uempmed)和失业人数(unemploy)等指标。

绘制多线图

现在,我们使用ggplot2来绘制多线图。

library(ggplot2)
ggplot(economics, aes(x = date, y = value, color = variable)) +
  geom_line() +
  scale_x_date(date_labels = "%Y", date_breaks = "5 years") +
  labs(x = "Year", y = "Value", title = "Multiple time series")

输出结果:

多线图

代码解释:

  • ggplot:创建一个ggplot对象;
  • economics:使用economics数据集作为数据源;
  • aes:使用date作为x轴,value作为y轴,variable作为颜色分组变量;
  • geom_line:绘制线条;
  • scale_x_date:设置x轴标签格式和间隔;
  • labs:设置x、y轴标签和标题。
时间序列图
准备数据

接下来,我们使用R语言内置的ts数据类型来生成一些时间序列数据。

set.seed(123)
ts_data <- ts(rnorm(48, mean = 10, sd = 2), start = c(2010, 1), frequency = 12)
ts_data

输出结果:

            Jan        Feb        Mar        Apr        May        Jun        Jul        Aug
2010  6.785585  8.453318  7.372578 10.383321  9.346076 11.541466 11.286645 12.072909
2011 12.272429 11.301323 11.408819  5.873302  6.323062  8.640487 10.998346  9.608753
2012 10.863017 11.618397 12.578605 10.690193 13.208551 12.329599 11.031688 10.531416
2013 11.511134  9.457401 10.377267 10.311175  9.126384  9.257572  8.375071 12.108392
            Sep        Oct        Nov        Dec
2010 11.187637 10.776285 11.663506 10.827498
2011 12.971752 10.650118 10.262475 11.534974
2012 10.960936  9.863785 11.113328  9.662821
2013 11.183419  8.710526 11.718491 10.499899

这个时间序列数据包含了48个月的数据,从2010年1月到2013年12月,数据频率为每年12个月。

绘制时间序列图

现在,我们使用ggplot2来绘制时间序列图。

ts_data_df <- data.frame(date = time(ts_data), value = ts_data)
ggplot(ts_data_df, aes(x = date, y = value)) +
  geom_line() +
  scale_x_continuous(breaks = seq(min(ts_data_df$date), max(ts_data_df$date), by = 12)) +
  labs(x = "Date", y = "Value", title = "Time series")

输出结果:

时间序列图

代码解释:

  • data.frame:将时间序列转换为数据框;
  • ggplot:创建一个ggplot对象;
  • ts_data_df:使用ts_data_df数据集作为数据源;
  • aes:使用date作为x轴,value作为y轴;
  • geom_line:绘制线条;
  • scale_x_continuous:设置x轴标签格式和间距;
  • labs:设置x、y轴标签和标题。
结论

通过本文,我们了解了如何使用ggplot2生成多线图和时间序列图。在实践中,我们可以将ggplot2与其他R语言包结合使用,进行更为复杂的数据分析和可视化。