>我目前有一个模拟如下:
library(igraph)
library(ggplot2)
count <- 1
BigList <- list()
repeat{
g <- erdos.renyi.game(30, 151 , type = "gnm" , directed = F , loops = F) %>%
set_vertex_attr("a", value = 0) %>%
set_vertex_attr("b", value = 0) %>%
set_vertex_attr("c", value = 0)
V(g)$c <- sample(c(0, .25, .5, .75, 1), vcount(g), replace = TRUE, prob = c(0.15, 0.15, 0.3, 0.3, 0.1))
time <- 1
smallList <- list()
repeat {
mean <- mean(V(g)$a == 1)
V(g)$b <- sapply(V(g), function(x) {
NeighborList = neighbors(g, x) ;
ifelse(length(NeighborList) > 0,
length(NeighborList[NeighborList$a == 1])/length(NeighborList),0) } )
V(g)$a[V(g)$c <= V(g)$b] <- 1
smallList[[time]] <- mean
mean2 <- mean(V(g)$a == 1)
time <- time + 1
if (mean == mean2) {
break
}
}
BigList[[count]] <- smallList
count <- count + 1
if(count == 51) {
break
}
}
所以,这个模拟运行了 50 次,每次 50 次我都想要一个图表来描述"平均值"随"时间"的变化。然后,我想将每个生成的图形添加到单个图中,以便比较每次运行的差异。我将如何做到这一点?
最简单的方法是不要在循环期间绘制,而是在使用 ggplot 之后绘制。为此,您需要在循环中构造一个 data.frame,其中包含所有具有变量计数的数据。行尝试是以这种方式构建您的 datd 框架
df <- rbind(df,data.frame(time=time, prop=mean, count = count))
最后做
ggplot(data=df, aes(x=time, y=prop, group=count, colour = count)) +
geom_line() +
geom_point()
您需要在某处增加计数。如果可以,请使用 for 循环,并尽量避免至少使用 (( 的名称。