R ggplot:数据帧源上的循环

R ggplot:数据帧源上的循环,r,ggplot2,melt,R,Ggplot2,Melt,我想在一个绘图中绘制100个对应于100个数据系列的图形。更准确地说,我有一个包含100个元素的列表(名称:ROC.df),其中每个元素都是一个数据帧(名称:df),包括两列POD和POFD。我想在一个单独的绘图中以不同的颜色绘制所有100个图形。我试图在循环中更改ggplot中的数据参数: ggplot() + for (i in 1:100) { df <- ROC.df[[i]][["df"]] RGB <- c("R" = runif(1, 0

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

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"))

我搜索了一下,发现建议使用
reformae2
包中的
melt
函数合并所有数据。我试过了,但没有成功。提前感谢您的帮助。

您可以使用行绑定列表中的所有data.frames,而不是使用100层,并使用
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"))
库(dplyr)
图书馆(GG2)
#创建数据帧列表
列出\u中的\u dfs%
拆分(重复(1:10,每个=10))
#绑定数据帧

df@Parfait I在
split()之前也使用了它的管道操作符
%>%
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"))