From b9db9e3d2fef634016ae881c7c8da3da6642f16c Mon Sep 17 00:00:00 2001 From: Ben Green Date: Wed, 23 Sep 2015 11:18:36 -0400 Subject: init plotting for hawkes diagram --- R Scripts/plot-data-prep.R | 59 +++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 53 insertions(+), 6 deletions(-) (limited to 'R Scripts/plot-data-prep.R') diff --git a/R Scripts/plot-data-prep.R b/R Scripts/plot-data-prep.R index b56ca1f..d577b5d 100644 --- a/R Scripts/plot-data-prep.R +++ b/R Scripts/plot-data-prep.R @@ -1,7 +1,10 @@ library(igraph) library(grid) +library(gridBase) library(gridExtra) +############ +###### Data Prep Diagram # create bipartite graph edges = c(1,6, 1,7, @@ -15,15 +18,15 @@ edges = c(1,6, 5,9) g = graph.bipartite(c(rep(T,5),rep(F,5)),edges) -# need to plot table separately from graphs and combine outside R -par(mfrow=c(1,2)) - +par(mfrow=c(1,3)) # (A) data table data = data.frame(get.edgelist(g)) data$X2 = toupper(letters[data$X2-5]) colnames(data) = c('Event Code (EC)','Identity Code (IC)') -grid.newpage(F) -plot(graph(1:2),layout=matrix(c(1,1,1,1),ncol=2)) +plot.new() +vps <- baseViewports() +pushViewport(vps$figure) +vp1 <-plotViewport() grid.table(data) # (B) bipartite person-event graph @@ -36,7 +39,51 @@ plot(g, layout=layout[,2:1], vertex.color=cols,edge.color='black', # (C) unipartite person-person graph g2 = bipartite.projection(g)$proj1 -plot(g2, vertex.color='#1f78b4', edge.color='black', +layout.g2 = layout.auto(g2) +plot(g2, vertex.color='#1f78b4', edge.color='black',layout=layout.g2, + 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)) + +vics = data.frame(IC = toupper(letters[1:5]), + Victim = c(T,F,F,F,T), + Day = c(3,NA,NA,NA,5)) +colnames(vics) = c('Identity Code (IC)','Victim','Infection Date') + +plot.new() +vps <- baseViewports() +pushViewport(vps$figure) +vp1 <-plotViewport() +grid.table(vics) + +cols = rep('#1f78b4',vcount(g2)) +cols[vics$Victim==T] = '#e41a1c' + +plot(g2, vertex.color=cols, edge.color='black',layout=layout.g2, vertex.frame.color=NA,vertex.size=30,vertex.label=toupper(letters[1:5]), vertex.label.color='white',vertex.label.family='sans') + +rate = function(x){ + print(x) + r = rep(.3,length(x)) + times = c(1,4) + for (time in times){ + r[x>=time] = r[x>=time] + 1.5*exp((time-x[x>=time])/4) + } + 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) + + + -- cgit v1.2.3-70-g09d2