# ndtv & networkDynamic detach(package:sna) detach(package:network) detach(package:igraph) library(igraph) library(intergraph) library(network) library(randomNames) set.seed(5) N=30 genders <- sample(c("Female", "Male"), N,T) df <- data.frame(id = randomNames(N,gender=genders, name.order = "first.last", name.sep = " "), sex=genders) g <- sample_forestfire(N, fw.prob=0.3,bw.factor=.9,directed=F) net<-intergraph::asNetwork(g) net %v% "col" <- c("green", "gold", "blue", "red", "pink")[edge.betweenness.community(g)$membership] net %v% "sex" <- genders net %v% 'id'<- as.character(df$id) net %v% "sizevar" <- sample(5:15,vcount(g),T) net %e% "type" <- sample(LETTERS[1:4],ecount(g),T) net %e% "weight" <- igraph::degree(g) library(ndtv) render.d3movie(net, usearrows = F, displaylabels = F, bg="#111111", vertex.border="#ffffff", vertex.col = net %v% "col", vertex.cex = (net %v% "sizevar")/8, edge.lwd = (net %e% "weight")/3, edge.col = '#55555599', vertex.tooltip = paste("Name:", (net %v% 'id') , "
", "Gender:", (net %v% 'sex')), edge.tooltip = paste("Edge type:", (net %e% 'type'), "
", "Edge weight:", (net %e% "weight" ) ), launchBrowser=T, filename="Network.html" ) library(networkDynamic) library(ndtv) ## Animation 6. # use 'net' made in ndtv_interactivity detach(package:igraph) net #30 nodes, #44 edges vs <- data.frame(onset=0, terminus=45, vertex.id=1:30) es <- data.frame(onset=1:45, terminus=45, head=as.matrix(net, matrix.type="edgelist")[,1], tail=as.matrix(net, matrix.type="edgelist")[,2]) net.dyn <- networkDynamic(base.net=net, edge.spells=es, vertex.spells=vs) plot(net.dyn, vertex.cex=(net %v% "size")/7, vertex.col="col") # Show time evolution through static images at different time points: filmstrip(net.dyn, displaylabels=F, mfrow=c(4, 8), slice.par=list(start=0, end=45, interval=5, aggregate.dur=5, rule='any')) compute.animation(net.dyn, animation.mode = "kamadakawai", slice.par=list(start=0, end=45, interval=2, aggregate.dur=1, rule='any')) render.d3movie(net.dyn, usearrows = F, displaylabels = F, label=net %v% "id", bg="#111111", #vertex.border="#ffffff", vertex.col = net %v% "col", vertex.cex = function(slice){ degree(slice)/2.5 }, edge.lwd = (net %e% "weight")/3, edge.col = '#55555599', vertex.tooltip = paste("Name:", (net %v% 'id') , "
", "Gender:", (net %v% 'sex')), edge.tooltip = paste("Edge type:", (net %e% 'type'), "
", "Edge weight:", (net %e% "weight" ) ), launchBrowser=F, filename="NetworkDynamic2.html", render.par=list(tween.frames = 15, show.time = F), script.type='remoteSrc')