Изменить размер ячейки легенды в листовке - PullRequest
0 голосов
/ 11 февраля 2019

Я создал карту плотности, но R выбрал слишком большие размеры бинов.Я хочу создать свои собственные размеры ящика.https://imgur.com/mR1L7be

На рисунке показаны размеры бина с полным целым числом, и оно не дает ничего значимого.Я также не могу отобразить базовую карту 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, чтобы показать на моей карте.Я также хочу сохранить карту в статическом формате.Поэтому значки / элементы управления, такие как масштабирование и панорамирование, не идеальны.

1 Ответ

0 голосов
/ 12 февраля 2019

У меня нет доступа к вашему набору данных, поэтому я только что скачал похожие данные с 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

Во второй части вашего вопроса вы хотите дать 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

...