更改传单中的图例箱大小
Change legend bin size in leaflet
我创建了一个密度图,但 R 选择的 bin 尺寸太宽了。我想创建自己的 bin 大小。
https://imgur.com/mR1L7be
该图像以完整整数显示 bin 大小,但没有产生任何有意义的结果。我也无法显示 Esri.WorldGrayCanvas 底图,但这并不重要。
library(tmap)
library(tmaptools)
library(leaflet)
library(tidyverse)
us_geo = read_shape("taxi_zones_sp.shp",as.sf = T,stringsAsFactors = F)
popmap = append_data(us_geo
,dropoffs
,key.shp = "Taxi_zone"
,key.data = "pu_taxi_zone")
#turn na's into zero.
popmap = popmap %>%
mutate_all(funs(replace(., is.na(.), 0)))
my_map =
tm_shape(popmap) +
tm_fill("perc", palette = "Oranges"
,title = "pickup density (%)", id = "Taxi_zone") +
tm_borders(alpha=.4)
leaflet() %>%
setView(lng = -74.058913, lat = 40.689852, zoom = 10) %>%
addProviderTiles("Esri.WorldGrayCanvas") + my_map
我想让 0 显示为白色,其余的以 0.5 为增量显示。
如果可能的话,Esri.WorldGrayCanvas 会显示在我的地图中。
我还想将地图保持为静态格式。所以icons/controls像缩放和平移一样不理想。
我无权访问您的数据集,所以我只是从 NYU 下载了外观相似的数据。为了正确设置 bin 的宽度,您需要在 tm_fill
函数中使用 breaks
参数:
library(tmap)
library(tmaptools)
library(leaflet)
library(tidyverse)
nyc_geo = read_shape("nyu_2451_36743.shp",as.sf = T,stringsAsFactors = F)
nyc_zone <- nyc_geo[4]
#I just made up some sample data for the purposes of this question
nyc_zone$rate = sample(seq(0,4,0.5), size=nrow(nyc_zone), replace=T)
breaks = seq(0,4,0.5)
my_map =
tm_shape(nyc_zone) +
tm_fill("rate", palette = "Oranges", breaks= breaks
,title = "pickup density (%)", id = "Taxi_zone") +
tm_borders(alpha=.4)
leaflet() %>%
setView(lng = -74.058913, lat = 40.689852, zoom = 10) %>%
addProviderTiles("Esri.WorldGrayCanvas") + my_map
产生以下情节:
对于问题的第二部分,您想给 Leaflet 一个 SpatialPolygonsDataFrame
而不是您现在使用的 tmap
元素。这是读取 shapefile 然后添加感兴趣的图块的基本工作:
library(leaflet)
library(sp)
nyc_map <- rgdal::readOGR(dsn = "nyu_2451_36743.shp", layer = "nyu_2451_36743")
nyc_map$rate = sample(seq(0,4,0.5), size=nrow(nyc_map), replace=T)
pal <- colorBin(palette = "Oranges", domain = nyc_map$rate, bins = breaks)
leaflet(nyc_map) %>%
addPolygons(fillColor = ~pal(rate),
weight = 2,
opacity = 1,
color = "white",
fillOpacity = 0.7) %>%
addProviderTiles("Esri.WorldGrayCanvas") %>%
addLegend(pal = pal, values = ~rate, opacity = 0.7, title = NULL,
position = "bottomright")
这是该地图的静态图片:
我创建了一个密度图,但 R 选择的 bin 尺寸太宽了。我想创建自己的 bin 大小。 https://imgur.com/mR1L7be
该图像以完整整数显示 bin 大小,但没有产生任何有意义的结果。我也无法显示 Esri.WorldGrayCanvas 底图,但这并不重要。
library(tmap)
library(tmaptools)
library(leaflet)
library(tidyverse)
us_geo = read_shape("taxi_zones_sp.shp",as.sf = T,stringsAsFactors = F)
popmap = append_data(us_geo
,dropoffs
,key.shp = "Taxi_zone"
,key.data = "pu_taxi_zone")
#turn na's into zero.
popmap = popmap %>%
mutate_all(funs(replace(., is.na(.), 0)))
my_map =
tm_shape(popmap) +
tm_fill("perc", palette = "Oranges"
,title = "pickup density (%)", id = "Taxi_zone") +
tm_borders(alpha=.4)
leaflet() %>%
setView(lng = -74.058913, lat = 40.689852, zoom = 10) %>%
addProviderTiles("Esri.WorldGrayCanvas") + my_map
我想让 0 显示为白色,其余的以 0.5 为增量显示。 如果可能的话,Esri.WorldGrayCanvas 会显示在我的地图中。 我还想将地图保持为静态格式。所以icons/controls像缩放和平移一样不理想。
我无权访问您的数据集,所以我只是从 NYU 下载了外观相似的数据。为了正确设置 bin 的宽度,您需要在 tm_fill
函数中使用 breaks
参数:
library(tmap)
library(tmaptools)
library(leaflet)
library(tidyverse)
nyc_geo = read_shape("nyu_2451_36743.shp",as.sf = T,stringsAsFactors = F)
nyc_zone <- nyc_geo[4]
#I just made up some sample data for the purposes of this question
nyc_zone$rate = sample(seq(0,4,0.5), size=nrow(nyc_zone), replace=T)
breaks = seq(0,4,0.5)
my_map =
tm_shape(nyc_zone) +
tm_fill("rate", palette = "Oranges", breaks= breaks
,title = "pickup density (%)", id = "Taxi_zone") +
tm_borders(alpha=.4)
leaflet() %>%
setView(lng = -74.058913, lat = 40.689852, zoom = 10) %>%
addProviderTiles("Esri.WorldGrayCanvas") + my_map
产生以下情节:
对于问题的第二部分,您想给 Leaflet 一个 SpatialPolygonsDataFrame
而不是您现在使用的 tmap
元素。这是读取 shapefile 然后添加感兴趣的图块的基本工作:
library(leaflet)
library(sp)
nyc_map <- rgdal::readOGR(dsn = "nyu_2451_36743.shp", layer = "nyu_2451_36743")
nyc_map$rate = sample(seq(0,4,0.5), size=nrow(nyc_map), replace=T)
pal <- colorBin(palette = "Oranges", domain = nyc_map$rate, bins = breaks)
leaflet(nyc_map) %>%
addPolygons(fillColor = ~pal(rate),
weight = 2,
opacity = 1,
color = "white",
fillOpacity = 0.7) %>%
addProviderTiles("Esri.WorldGrayCanvas") %>%
addLegend(pal = pal, values = ~rate, opacity = 0.7, title = NULL,
position = "bottomright")
这是该地图的静态图片: