ggplotLatentMap <- function()

in modelVisualizeR/R/ggplotWrappers.R [193:233]


ggplotLatentMap <- function(model, shp, title='', shape_level = 'residence_census_tract'){
  
  
  plotDat <- right_join(model$latentField %>% group_by_(.dots =shape_level) %>% summarise(modeled_intensity_median = median(modeled_intensity_median)),shp, by=shape_level)

  bbox<-sf::st_bbox(shp$geometry)
  
  mapSettings <- ggplot() + #xlim(c(min(122.5, -bbox[1]),max(121.7,-bbox[3]))) + ylim(c(max(47.17,bbox[2]),min(47.76,bbox[4]))) +
    theme_bw() +
    theme(axis.text=element_blank(),axis.ticks=element_blank(),panel.grid.major=element_line(colour="transparent"), panel.border = element_blank())
  p<-mapSettings + geom_sf(data=shp,size=0.1,aes(fill=NaN))
  
  colorLimits<-c(min(plotDat$modeled_intensity_median,na.rm=TRUE),max(plotDat$modeled_intensity_median,na.rm=TRUE))
  colorBreaks<-unique(c(min(colorLimits),round(1e3*seq(sqrt(min(colorLimits)),sqrt(max(colorLimits)), length.out = 4)^2)/1e3, max(colorLimits)))
  
  p1 <- p + geom_sf(data=plotDat,size=0, aes(fill=modeled_intensity_median))  +
    guides(fill=guide_legend(title="modeled_intensity")) +
    viridis::scale_fill_viridis(na.value="transparent",trans = "sqrt",breaks=colorBreaks,limits=colorLimits)
  
  
  
  plotDat <- right_join(model$latentField %>% group_by_(.dots =shape_level) %>% summarise(modeled_intensity_peak = encountered_week[modeled_intensity_median == max(modeled_intensity_median)]),shp, by=shape_level)
  colorLabels<-sort(unique(plotDat$modeled_intensity_peak))
  
  plotDat$modeled_intensity_peak<-factor(plotDat$modeled_intensity_peak, levels=colorLabels)
  
  plotDat$integer_peak <- as.integer(plotDat$modeled_intensity_peak)
  
  colorLimits<-c(min(plotDat$integer_peak,na.rm=TRUE),max(plotDat$integer_peak,na.rm=TRUE))
  colorBreaks<-min(colorLimits):max(colorLimits)

  p2 <- p + geom_sf(data=plotDat,size=0, aes(fill=integer_peak))  +
    guides(fill=guide_legend(title="peak intensity")) +
    viridis::scale_fill_viridis(na.value="transparent",breaks=colorBreaks,limits=colorLimits,
                                labels=colorLabels)
  
  
  
  
  grid.arrange(p1,p2,nrow=1, top=textGrob(title))
}