我想在一个单独的图中绘制对应于100个数据系列的100个图。更确切地说,我有一个包含100个元素的列表(名称:ROC.df
),其中每个元素都是一个数据框(名称:df
),包括两列POD
和POFD
。我想在一个单独的图中以不同的颜色绘制所有100个图。我试图在循环中改变ggplot中的data
参数:
ggplot() +
for (i in 1:100) {
df <- ROC.df[[i]][["df"]]
RGB <- c("R" = runif(1, 0.0, 1.0), "G" = runif(1, 0.0, 1.0), "B" = runif(1, 0.0, 1.0))
geom_line(data = df,
mapping = aes(x = POFD, y = POD), color = rgb(RGB["R"], RGB["G"], RGB["B"]), alpha=0.5, size = 1) +
geom_point(data = df,
mapping = aes(x = POFD, y = POD), color = rgb(RGB["R"], RGB["G"], RGB["B"]), alpha=0.5, size=4)
}
+ theme_bw() + theme(panel.border = element_blank(), panel.grid.major = element_blank(),
panel.grid.minor = element_blank(), axis.line = element_line(colour = "black"))
代码不起作用。以下是每个df
的样子:(以下内容对应ROC.df[[1]][["df"]]
):
POFD POD
1 0.00000000 0.1666667
2 0.01449275 0.1666667
3 0.02898551 0.1666667
4 0.02898551 0.3333333
5 0.04347826 0.3333333
6 0.05797101 0.3333333
7 0.07246377 0.3333333
8 0.08695652 0.3333333
9 0.08695652 0.5000000
10 0.10144928 0.5000000
11 0.10144928 0.6666667
12 0.10144928 0.8333333
13 0.11594203 0.8333333
14 0.13043478 0.8333333
15 0.14492754 0.8333333
16 0.15942029 0.8333333
17 0.31884058 0.8333333
18 0.33333333 0.8333333
19 0.34782609 0.8333333
20 0.34782609 1.0000000
21 0.40579710 1.0000000
22 0.42028986 1.0000000
23 0.43478261 1.0000000
24 0.44927536 1.0000000
25 0.46376812 1.0000000
我搜索了一下,发现建议使用melt
包中的reshape2
函数合并所有数据。我试过但我没有实现。预先感谢您的帮助。
您可以行绑定列表中的所有data.frames,并使用col
参数应用不同的颜色,而不是使用100个图层。这是一个列表中包含10个随机data.frames的示例:
library(dplyr)
library(ggplot2)
# Create list of data frames
list_of_dfs <- data.frame(POD = rep(1:10, 10) + rnorm(100),
POFD = rep(5:14, 10) + rnorm(100),
group = factor(LETTERS[rep(1:10, each = 10)])) %>%
split(rep(1:10, each = 10))
# Bind data frames
df <- bind_rows(list_of_dfs)
# Create plot
ggplot(df) +
geom_line(aes(x = POD, y = POFD, col = group)) +
theme_bw() +
theme(panel.border = element_blank(), panel.grid.major = element_blank(),
panel.grid.minor = element_blank(), axis.line = element_line(colour = "black"))