У меня нет доступа к вашему набору данных, поэтому я только что скачал похожие данные с NYU .Чтобы правильно установить ширину ваших лотков, вам нужно использовать параметр breaks
в функции tm_fill
:
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
, который дает следующий график:
![enter image description here](https://i.stack.imgur.com/LZV7I.png)
Во второй части вашего вопроса вы хотите дать Leaflet SpatialPolygonsDataFrame
вместо элемента tmap
, который вы используете сейчас.Вот базовая обработка чтения в шейп-файле и добавления интересующих плиток:
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")
Вот статичное изображение этой карты:
![enter image description here](https://i.stack.imgur.com/74r3v.png)