我有一个1990年至1994年的时间序列数据,其中有15个工作表中的5个变量。我将所有这些数据读到列表中。我需要对15家公司的所有5个变量进行时间序列图绘制。如何才能做到这一点?我的意思是我基本上需要5个数字,每个数字包含15个公司各自变量的时间序列图。
答案 0 :(得分:1)
使用软件包ggplot2
,可以按以下步骤进行操作。我假设您有一个名为df_list
的15个数据帧的列表。
首先,rbind
将它们与公司名称一起添加为新列。在此伪造的数据案例中,公司名称存储为df的names
。
all_df <- lapply(names(df_list), function(x){
DF <- df_list[[x]]
DF$Company <- x
DF
})
all_df <- do.call(rbind, all_df)
然后,从宽幅格式更改为长格式。
long_df <- reshape2::melt(all_df, id.vars = c("Company", "Date"))
现在,绘制它们。这些图可以随意定制,上面有很多帖子。
library(ggplot2)
ggplot(long_df, aes(x = Date, y = value, colour = Company)) +
geom_line() +
facet_wrap(~ variable)
数据创建代码。
set.seed(1234)
Dates <- seq(as.Date("1990-01-01"), as.Date("1994-12-31"), by = "month")
n <- length(Dates)
df_list <- lapply(1:15, function(i){
tmp <- matrix(rnorm(5*n), ncol = 5)
tmp <- apply(tmp, 2, cumsum)
colnames(tmp) <- paste0("Var", 1:5)
tmp <- as.data.frame(tmp)
tmp$Date <- Dates
tmp
})
names(df_list) <- paste("Company", seq_along(df_list), sep = ".")