1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
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='')
lines(c(1,1))
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))
|