Otimizando add_trace () em um loop for?

Estou usando oadd_trace () função em umpara loop para criar linhas para um gráfico de rede 3d no modo scatter3d do plotly. Cada add_trace desenha uma linha individual entre dois nós na rede. O método está funcionando, mas com um grande número de loops, a velocidade dos loops individuais parece estar diminuindo muito rapidamente.

Dados de exemplo podem ser baixados aqui:https://gist.github.com/pravj/9168fe52823c1702a07b

library(igraph)
library(plotly)

G <- read.graph("karate.gml", format = c("gml"))
L <- layout.circle(G)

vs <- V(G)
es <- as.data.frame(get.edgelist(G))

Nv <- length(vs)
Ne <- length(es[1]$V1)

Xn <- L[,1]
Yn <- L[,2]

network <- plot_ly(type = "scatter3d", x = Xn, y = Yn, z = rep(0, Ne), mode = "markers", text = vs$label, hoverinfo = "text", showlegend = F)

for(i in 1:Ne) {
  v0 <- es[i,]$V1
  v1 <- es[i,]$V2

  x0 <-  Xn[v0]
  y0 <-  Yn[v0]
  x1 <-  Xn[v1]
  y1 <-  Yn[v1]

  df <-  data.frame(x = c(x0, x1), y = c(y0, y1), z = c(0, 0))
  network <- add_trace(network, data = df, x = x, y = y, z = z, type = "scatter3d", mode = "lines", showlegend = F, 
                       marker = list(color = '#030303'), line = list(width = 0.5))
}

Este exemplo é bastante rápido, mas quando incluo algumas centenas de arestas ou mais, a execução dos loops individuais começa a desacelerar radicalmente. Tentei diferentes métodos de otimização (vetorização etc.), mas parece não haver solução para a lentidão da própria função add_trace.

Alguma sugestão?

questionAnswers(1)

yourAnswerToTheQuestion