如何使用传单绘制 SpatialPolygonsDataframe 中的特定列?
How to plot a specific column from a SpatialPolygonDataframe with leafletR?
我想使用 leafletR::leaflet
创建等值线图。
我的数据来自 SpatialPolygonsDataFrame
,我想选择要绘制的特定列。
使用 sp::spplot
,这很简单,因为参数 zcol
允许我指定要绘制的 layer/column:
library("maptools");library("sp");library("leafletR")
SP <- readShapePoly(system.file("shapes/sids.shp",
package="maptools")[1],
proj4string=CRS("+proj=longlat +datum=WGS84
+no_defs +ellps=WGS84
+towgs84=0,0,0"))
spplot(SP, zcol="BIR79")
然而,对于 leafletR
,我不知道如何指定图层,它只是绘制普通地图边界:
SP4leaflet <- toGeoJSON(data=SP, dest=tempdir(), name="BIR79")
SPleaflet <- leaflet(data=SP4leaflet, dest=tempdir(),
title="Trying to plot BIR79",
base.map="osm", popup="*")
SPleaflet
关于如何 select 想要的 layer/column 用 leafletR
绘制的任何想法?
也许这样的方法可行。请注意,我使用的是 leaflet
而不是 leafletR
。这里有一个关于这个包的很好的介绍:here
library(leaflet)
library(maptools)
library(sp)
library(classInt)
library(classInt)
SP <- readShapePoly(system.file("shapes/sids.shp",
package="maptools")[1],
proj4string=CRS("+proj=longlat +datum=WGS84
+no_defs +ellps=WGS84
+towgs84=0,0,0"))
spplot(SP, zcol="BIR79")
## 6 classes with fixed given breaks
nclass <- classIntervals(SP$BIR79, n=6)
## Color for each class
colcode = findColours(nclass, c("red", "blue"))
leaflet(SP) %>% addTiles() %>% addPolygons(data = SP, color = colcode)
您的代码缺少样式定义。对于分级样式,您必须使用 styleGrad
创建样式对象。 styleGrad
中的 prop
参数指定要可视化的 属性。
library("maptools")
library("sp")
library("leafletR")
SP <- readShapePoly(system.file("shapes/sids.shp",
package="maptools")[1],
proj4string=CRS("+proj=longlat +datum=WGS84
+no_defs +ellps=WGS84
+towgs84=0,0,0"))
SP4leaflet <- toGeoJSON(data=SP, dest=tempdir(), name="BIR79")
SPleaflet <- leaflet(data=SP4leaflet, dest=tempdir(),
title="Trying to plot BIR79",
base.map="osm", popup="*")
## missing style definition
brks <- seq(0, max(SP$BIR79), by=5000)
clrs <- colorRampPalette(c("blue","yellow", "red"))(7)
stl <- styleGrad(prop="BIR79", breaks=brks, style.val=clrs,
out=1, leg="BIR79")
## end style definition
SPleaflet <- leaflet(data=SP4leaflet, dest=tempdir(),
title="Trying to plot BIR79", base.map="osm",
style=stl, popup="*")
SPleaflet
为了完整起见,我想提一下,现在可以使用 library(mapview)
轻松实现。
library("maptools")
library("sp")
library("mapview")
SP <- readShapePoly(system.file("shapes/sids.shp",
package="maptools")[1],
proj4string=CRS("+proj=longlat +datum=WGS84
+no_defs +ellps=WGS84
+towgs84=0,0,0"))
spplot(SP, zcol="BIR79")
mapview(SP, zcol="BIR79")
另请参阅 http://edzer.github.io/sp/#interactive-maps-leaflet-mapview for a similar example and http://environmentalinformatics-marburg.github.io/web-presentations/20150723_mapView.html 了解 mapview
的更多功能。
我想使用 leafletR::leaflet
创建等值线图。
我的数据来自 SpatialPolygonsDataFrame
,我想选择要绘制的特定列。
使用 sp::spplot
,这很简单,因为参数 zcol
允许我指定要绘制的 layer/column:
library("maptools");library("sp");library("leafletR")
SP <- readShapePoly(system.file("shapes/sids.shp",
package="maptools")[1],
proj4string=CRS("+proj=longlat +datum=WGS84
+no_defs +ellps=WGS84
+towgs84=0,0,0"))
spplot(SP, zcol="BIR79")
然而,对于 leafletR
,我不知道如何指定图层,它只是绘制普通地图边界:
SP4leaflet <- toGeoJSON(data=SP, dest=tempdir(), name="BIR79")
SPleaflet <- leaflet(data=SP4leaflet, dest=tempdir(),
title="Trying to plot BIR79",
base.map="osm", popup="*")
SPleaflet
关于如何 select 想要的 layer/column 用 leafletR
绘制的任何想法?
也许这样的方法可行。请注意,我使用的是 leaflet
而不是 leafletR
。这里有一个关于这个包的很好的介绍:here
library(leaflet)
library(maptools)
library(sp)
library(classInt)
library(classInt)
SP <- readShapePoly(system.file("shapes/sids.shp",
package="maptools")[1],
proj4string=CRS("+proj=longlat +datum=WGS84
+no_defs +ellps=WGS84
+towgs84=0,0,0"))
spplot(SP, zcol="BIR79")
## 6 classes with fixed given breaks
nclass <- classIntervals(SP$BIR79, n=6)
## Color for each class
colcode = findColours(nclass, c("red", "blue"))
leaflet(SP) %>% addTiles() %>% addPolygons(data = SP, color = colcode)
您的代码缺少样式定义。对于分级样式,您必须使用 styleGrad
创建样式对象。 styleGrad
中的 prop
参数指定要可视化的 属性。
library("maptools")
library("sp")
library("leafletR")
SP <- readShapePoly(system.file("shapes/sids.shp",
package="maptools")[1],
proj4string=CRS("+proj=longlat +datum=WGS84
+no_defs +ellps=WGS84
+towgs84=0,0,0"))
SP4leaflet <- toGeoJSON(data=SP, dest=tempdir(), name="BIR79")
SPleaflet <- leaflet(data=SP4leaflet, dest=tempdir(),
title="Trying to plot BIR79",
base.map="osm", popup="*")
## missing style definition
brks <- seq(0, max(SP$BIR79), by=5000)
clrs <- colorRampPalette(c("blue","yellow", "red"))(7)
stl <- styleGrad(prop="BIR79", breaks=brks, style.val=clrs,
out=1, leg="BIR79")
## end style definition
SPleaflet <- leaflet(data=SP4leaflet, dest=tempdir(),
title="Trying to plot BIR79", base.map="osm",
style=stl, popup="*")
SPleaflet
为了完整起见,我想提一下,现在可以使用 library(mapview)
轻松实现。
library("maptools")
library("sp")
library("mapview")
SP <- readShapePoly(system.file("shapes/sids.shp",
package="maptools")[1],
proj4string=CRS("+proj=longlat +datum=WGS84
+no_defs +ellps=WGS84
+towgs84=0,0,0"))
spplot(SP, zcol="BIR79")
mapview(SP, zcol="BIR79")
另请参阅 http://edzer.github.io/sp/#interactive-maps-leaflet-mapview for a similar example and http://environmentalinformatics-marburg.github.io/web-presentations/20150723_mapView.html 了解 mapview
的更多功能。