如果您希望将它们全部放在一个图中,最简单的方法是先“堆叠”数据框并包含一列来标识数据来自哪个原始数据框。
library(dplyr)
library(ggplot2)
首先创建假数据。下面的代码创建了一个包含八个数据框的列表。我们假设这是我们读入数据后开始的地方。如果您从单独的文件(例如 csv 文件)中读取数据帧,只需将它们全部读取到一个列表中,然后使用 bind_rows 将它们堆叠起来:
# Fake data
set.seed(954)
df = lapply(paste0("d",0:7), function(x) {
n=sample(seq(100,500,100),1)
data.frame(source=x, index=1:n, values=cumsum(rnorm(n)))
})
# Stack the eight data frames into a single data frame
df = bind_rows(df)
使用 ggplot 绘图。我们使用source(原始数据框的名称)作为colour美学:
ggplot(df, aes(index, values, colour=source)) +
geom_line() +
theme_bw()
或者,如果您想规范化 index 以跨越每个数据帧的相同范围:
ggplot(df %>% group_by(source) %>%
mutate(index = index/max(index)),
aes(index, values, colour=source)) +
geom_line() +
theme_bw()
更新:针对您的评论,如果您已经拥有数据框,您可以这样做以获取单个数据框:
df=lapply(paste0("sign",1:8), function(x) {
data.frame(source=x, get(x))
})
df=bind_rows(df)
但是您必须在某个时候将数据读入 R,当您将数据文件读入 R 时,您可以处理这种类型的处理。