summaryrefslogtreecommitdiffstats
path: root/R Scripts
diff options
context:
space:
mode:
authorBen Green <bgreen@g.harvard.edu>2015-09-24 17:02:04 -0400
committerBen Green <bgreen@g.harvard.edu>2015-09-24 17:02:04 -0400
commitd191aaebe1db710cb8e839c925d10248bcb82cec (patch)
treec4c518dd5bbabd2d9af23bea31d97c40bf0a0b86 /R Scripts
parentb9db9e3d2fef634016ae881c7c8da3da6642f16c (diff)
downloadcriminal_cascades-d191aaebe1db710cb8e839c925d10248bcb82cec.tar.gz
plot tweaks
Diffstat (limited to 'R Scripts')
-rw-r--r--R Scripts/plot-data-prep.R51
-rw-r--r--R Scripts/plot-network.R4
2 files changed, 36 insertions, 19 deletions
diff --git a/R Scripts/plot-data-prep.R b/R Scripts/plot-data-prep.R
index d577b5d..937512a 100644
--- a/R Scripts/plot-data-prep.R
+++ b/R Scripts/plot-data-prep.R
@@ -8,6 +8,7 @@ library(gridExtra)
# create bipartite graph
edges = c(1,6,
1,7,
+ 1,10,
2,8,
3,7,
3,8,
@@ -18,7 +19,7 @@ edges = c(1,6,
5,9)
g = graph.bipartite(c(rep(T,5),rep(F,5)),edges)
-par(mfrow=c(1,3))
+par(mfrow=c(1,3), mar=c(1,1,1,1))
# (A) data table
data = data.frame(get.edgelist(g))
data$X2 = toupper(letters[data$X2-5])
@@ -38,21 +39,24 @@ plot(g, layout=layout[,2:1], vertex.color=cols,edge.color='black',
vertex.label.color='white',vertex.label.family='sans')
# (C) unipartite person-person graph
+par(mar=rep(1,4))
g2 = bipartite.projection(g)$proj1
-layout.g2 = layout.auto(g2)
-plot(g2, vertex.color='#1f78b4', edge.color='black',layout=layout.g2,
+layout.g2 = matrix(c(0,.33,-.75,-.33,0,-1,0,1,.75,-.33),ncol=2,byrow=T)
+plot(g2, vertex.color='#1f78b4', edge.color='black',layout=layout.g2,rescale=F,
vertex.frame.color=NA,vertex.size=30,vertex.label=toupper(letters[1:5]),
vertex.label.color='white',vertex.label.family='sans')
-#############
+##############################################################################
+##############################################################################
#### Hawkes Process Diagram
-par(mfrow=c(1,3))
+layout(matrix(c(1,2,3,3,3,3), ncol=2, byrow = TRUE))
vics = data.frame(IC = toupper(letters[1:5]),
Victim = c(T,F,F,F,T),
- Day = c(3,NA,NA,NA,5))
+ Day = c(2,NA,NA,NA,4))
colnames(vics) = c('Identity Code (IC)','Victim','Infection Date')
+# A
plot.new()
vps <- baseViewports()
pushViewport(vps$figure)
@@ -62,28 +66,37 @@ grid.table(vics)
cols = rep('#1f78b4',vcount(g2))
cols[vics$Victim==T] = '#e41a1c'
-plot(g2, vertex.color=cols, edge.color='black',layout=layout.g2,
+# B
+plot(g2, vertex.color=cols, edge.color='black',layout=layout.g2,rescale=F,
vertex.frame.color=NA,vertex.size=30,vertex.label=toupper(letters[1:5]),
- vertex.label.color='white',vertex.label.family='sans')
+ vertex.label.color='white',vertex.label.family='sans',axes=F)
+# C
+par(mar=c(5.1, 4.1, 4.1, 2.1))
rate = function(x){
print(x)
- r = rep(.3,length(x))
- times = c(1,4)
+ r = rep(base+0.3,length(x))
for (time in times){
- r[x>=time] = r[x>=time] + 1.5*exp((time-x[x>=time])/4)
+ r[x>=time] = r[x>=time] + 1.5*exp((time-x[x>=time])/2)
}
return(r)
}
-plot(rate,from=0,to=10,ylim=c(0,3),lwd=0,bty='l',
- yaxt='n',xlab='Date',ylab='Infection Rate')
-mtext("Date", line = 3, side = 1)
-n = 1000
-xs = c(0,seq(0,10,length.out=n),10)
-ys = rate(xs)
-ys[c(1,n+2)] = 0
-polygon(xs,ys,col='#1f78b4',border=NA)
+tmin = 1
+tmax = 6
+n = 1000
+plot(rate,from=tmin,to=tmax,ylim=c(0,15),lwd=0,bty='l',col='white',
+ yaxt='n',xlab='Date',ylab='Infection Rate')
+for(i in 1:vcount(g2)){
+ base <<- 3*(5-i)
+ times <<- vics[neighbors(g2,i),3]
+ times <<- times[!is.na(times)]
+ xs = c(tmin,seq(tmin,tmax,length.out=n),tmax)
+ ys = rate(xs)
+ ys[c(1,n+2)] = base
+ polygon(xs,ys,col='#1f78b4',border=NA)
+}
+axis(2, at=seq(0.3,12.3,3), lab=toupper(letters[seq(5,1,-1)]), tick=F, las=T,lwd=0)
diff --git a/R Scripts/plot-network.R b/R Scripts/plot-network.R
index 4c1f9fa..93c48fb 100644
--- a/R Scripts/plot-network.R
+++ b/R Scripts/plot-network.R
@@ -19,3 +19,7 @@ load('Results/layout.RData')
par(bg='#e0e0e0')
plot(lcc,vertex.size=1,vertex.color=cols,vertex.label=NA,
layout=layout.drl,edge.color=NA,vertex.frame.color=NA)
+
+# library(rgl)
+rglplot(lcc,vertex.size=1,vertex.color=cols,vertex.label=NA,
+ layout=layout.drl,edge.color=NA,vertex.frame.color=NA)