📅  最后修改于: 2023-12-03 15:19:53.904000             🧑  作者: Mango
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语言包结合使用,进行更为复杂的数据分析和可视化。