r - 从列表中绘制多个图
问题描述
我有一个从 1990 年到 1994 年的时间序列数据,包含 15 张纸中的 5 个变量。我将所有这些数据读入一个列表。我需要在多个图中为 15 家公司绘制所有 5 个变量的时间序列图。如何才能做到这一点?我的意思是我基本上需要 5 个数字,每个数字包含 15 家公司各自变量的时间序列图。
解决方案
使用包ggplot2
可以按如下方式完成。我假设您有一个包含 15 个数据框的列表,名为df_list
.
首先,rbind
它们与公司名称一起作为新列。这些公司的名称在这个假数据案例中存储为 df's 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 = ".")
推荐阅读
- ios - Android studio颤振项目给pod未安装错误
- c# - 我是否克服了工程学?
- omniscidb - OmnisSci:“排序结果太慢了”
- javascript - 我尝试了一个 API 请求,但它给了我这个错误 Uncaught SyntaxError: Unexpected token '<'
- sql - 我如何获得最大计数的详细信息?
- python - torch.pow() 结果为 Nan
- kotlin - 何时在 Kotlin 中启动新范围
- php - Laravel 在 eloquent 查询日志上定义无限循环
- docker - 无法在 popper 工作流程中的单独步骤中使用 python 模块
- apache - 如何在一台 apache 服务器上运行 wsgi 和常用站点?