Following my previous post, François (aka @FrancoisKeck) posted a comment mentionning another package I could use to get an interactive map, the rleafmap package. And the heatmap was here easy to include.
The first part is still the same, to get the data,
> require(rleafmap) > library(sp) > library(rgdal) > library(maptools) > library(KernSmooth) > setwd("/home/arthur/Documents/") > deaths <- readShapePoints("Cholera_Deaths") > df_deaths <- data.frame(deaths@coords) > coordinates(df_deaths)=~coords.x1+coords.x2 > proj4string(df_deaths)=CRS("+init=epsg:27700") > df_deaths = spTransform(df_deaths,CRS("+proj=longlat +datum=WGS84")) > df=data.frame(df_deaths@coords)
To get a first visualisation, use
> stamen_bm <- basemap("stamen.toner") > j_snow <- spLayer(df_deaths, stroke = FALSE) > writeMap(stamen_bm, j_snow, width = 1000, height = 750, setView = c( mean(df[,1]),mean(df[,2])), setZoom = 14)
and again, using the + and the – in the top left area, we can zoom in, or out. Or we can do it manually,
> writeMap(stamen_bm, j_snow, width = 1000, height = 750, setView = c( mean(df[,1]),mean(df[,2])), setZoom = 16)
To get the heatmap, use
> library(spatstat) > library(maptools) > win <- owin(xrange = bbox(df_deaths)[1,] + c(-0.01,0.01), yrange = bbox(df_deaths)[2,] + c(-0.01,0.01)) > df_deaths_ppp <- ppp(coordinates(df_deaths)[,1], coordinates(df_deaths)[,2], window = win) > > df_deaths_ppp_d <- density.ppp(df_deaths_ppp, sigma = min(bw.ucv(df[,1]),bw.ucv(df[,2]))) > df_deaths_d <- as.SpatialGridDataFrame.im(df_deaths_ppp_d) > df_deaths_d$v[df_deaths_d$v < 10^3] <- NA > stamen_bm <- basemap("stamen.toner") > mapquest_bm <- basemap("mapquest.map") > j_snow <- spLayer(df_deaths, stroke = FALSE) > df_deaths_den <- spLayer(df_deaths_d, layer = "v", cells.alpha = seq(0.1, 0.8, length.out = 12)) > my_ui <- ui(layers = "topright") > writeMap(stamen_bm, mapquest_bm, j_snow, df_deaths_den, width = 1000, height = 750, interface = my_ui, setView = c( mean(df[,1]),mean(df[,2])), setZoom = 16)
The amazing thing here are the options in the top right corner. For instance, we can remove some layers, e.g. to remove the points
or to change the background
To get an html file, instead of a standard visualisation in RStudio, use
> writeMap(stamen_bm, mapquest_bm, j_snow, df_deaths_den, width = 450, height = 350, interface = my_ui, setView = c( mean(df[,1]),mean(df[,2])), setZoom = 16, directView ="browser")
which will generate the html table (as well as some additional files actually) above. Awesome, isn’t it?
OpenEdition suggests that you cite this post as follows:
Arthur Charpentier (March 31, 2015). Another Interactive Map for the Cholera Dataset. Freakonometrics. Retrieved September 16, 2024 from https://doi.org/10.58079/ouzd
Is there an easy way to include rleafmap maps in knitr output?
Hi, thanks for your sugestions!
I’m not sure, but in the last script, instead of using directview=’viewer’ one should change to directView=’browser’, to get an html file…
or I misunderstood something.
indeed, sorry for the typo