Leaflet for RLeaflet for R is developed by the guys who brought us RStudio. It seems more documented than a package called leafletR so let us have a look at it. I will try this on RStudio Version 0.99.484.
InstallationInstallation works “flawlessly” by typing
install.packages("leaflet")into the R console. But first I ran in the problem that I need to upgrade R to the newest version as it was not upgraded by installing latest RStudio on my Ubuntu system. But as we have the package activated
library("leaflet", lib.loc="~/R/x86_64-pc-linux-gnu-library/3.2")we can go ahead.
Let’s create a webmapFirst we need to create a leaflet instance with a basemap embedded:
m <- leaflet() m <- addTiles(m)Now we have a nice basis for the next step. Let’s add a thing from the last decade which is called a shapefile. But first make sure you have the dev libraries from rgdal and libproj installed. To enable R to work with shapefiles we will use the package rgdal:
install.packages("rgdal")and enable it. But we are interested in adding some layers as well:
polygons <- readOGR("polygon_feature.shp", layer = "polygon_feature", verbose = FALSE) m <- addPolygons(m,data=polygons, fillColor = "black", group = "Polygon")# polygons lines <- readOGR("line_feature.shp", layer = "line_feature", verbose = FALSE) m <- addPolylines(m, data = lines, color = "black",opacity = 1,group = "Line") #to add a line with the layertext Line" m <- addLayersControl(m, baseGroups = c("OSM (default)"), overlayGroups = c("Polyline", "Line"), options = layersControlOptions(collapsed = FALSE) ) # our layercontrol m #will show the current map in the preview windowThat was easy and the syntax is quite comparable to the one we know from leaflet. We can also add raster images up to 4mb of size:
r <- raster("min_image.tif") m <- addRasterImage(m,r, opacity = 0.9, colors=gray.colors(255))Check even more examples on the github.io page of Leaflet for R.
ExportingThe whole map is shown in the Viewer of RStudio: So we choose the “Export” option and select “Save as Web Page…” and check it out:
You can download the sample code and also the data for this example.