library(igraph) library(RColorBrewer) library(poweRlaw) setwd("~/Documents/Violence Cascades/") start_date = as.Date("2005-12-31") # plot cascade sizes data = read.csv('Results/components_dist-91515.csv',header=F) data = data[order(data$V1),] sizes = 1:max(data$V1) counts = rep(0,max(sizes)) counts[data$V1] = data$V2 pl = power.law.fit(counts) plot(sizes,counts,log='xy',pch=20,col='#377EB8', xlab='Size of Cascade', ylab='Number of Cascades', main='') sizes_pl = displ$new(counts[counts>1]) est = estimate_xmin(sizes_pl) sizes_pl$setXmin(est) plot(sizes_pl) lines(sizes_pl, col=2) # plot cascades edges = read.csv('Results/edges-91515.csv',header=F, col.names=c('v1','t1','v2','t2','dist')) edges$v1 = edges$v1*10000 + edges$t1 edges$v2 = edges$v2*10000 + edges$t2 dag = graph.data.frame(edges[,c(1,3)], directed=TRUE) table(components(dag,mode='weak')$csize) clusters = clusters(dag) membership = clusters$membership csize = clusters$csize order = rev(order(csize)) i = 25 V = which(clusters(dag)$membership==order[i]) # get all nodes in cluster cc = induced.subgraph(dag,V) times = as.numeric(V(cc)$name) %% 10000 start_date + range(times) ### plot cascade ### cb = brewer.pal(3,'Paired') cols = rep('#1f78b4',vcount(cc)) seed = which(degree(cc,mode='in')==0) cols[seed] = '#d95f02' plot(cc,vertex.size=8,edge.arrow.size=0.2,vertex.color=cols,vertex.label=NA, layout=layout.reingold.tilford(cc,root=seed), edge.color='black',vertex.frame.color=NA) par(mfrow = c(1,3))