R ggplot:遍历数据帧源

时间:2019-03-24 13:05:17

标签: r ggplot2 melt

我想在一张图中绘制100个与100个数据系列相对应的图形。更准确地说,我有一个包含100个元素的列表(名称:ROC.df),其中每个元素都是一个数据帧(名称:df),其中包括两列POD和{{1} }。我想在一个绘图中以不同的颜色绘制所有100个图形。我试图循环更改ggplot中的POFD参数:

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函数合并所有数据。我尝试过,但没有实现。预先感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

代替使用100层,您可以行绑定列表中的所有data.frames,并使用col参数应用不同的颜色。 下面是一个列表中有10个随机数据帧的示例:

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"))
相关问题