mapview: стандартизация размера точек по группам - PullRequest
0 голосов
/ 08 ноября 2019

Используя zcol, cex и burst, можно настроить размер всех уровней внутри точечного слоя в mapview. Однако размер каждой точки относится только к размеру других точек в пределах того же уровня. Например, в следующем коде размер точки со значением number.of.types 14 в группе a такой же, как number.of.types значение 6 в группе b.

library(tidyverse)
library(tidyr)
library(mapview)

b = breweries %>% 
  drop_na(number.of.types) %>% 
  mutate(group = ifelse(number.of.types >= 7,"a","b"))

b %>%
  mapview(zcol="group", cex="number.of.types", burst=T)

Можно ли стандартизировать размер точек на разных уровнях, не прибегая к необходимости определять это для каждого уровня слоя отдельно?

1 Ответ

1 голос
/ 08 ноября 2019

обновление

Я только что обнаружил, что установка burst -аргумента на FALSE, кажется, помогает?

b %>%
  mapview(zcol="group", cex="number.of.types", burst=FALSE)

enter image description here

предыдущий ответ

Я не уверен насчет mapview -опций, так как я редко использую функцию.

Вы можете попытаться повторно скопировать карту, которую вы хотите, с помощью листовки (это то, что использует mapview, если я правильно помню).

Требуется немного больше строк кода, хотя ..

library(leaflet)

colorGroup <- colorFactor( topo.colors( 2 ), b$group )

leaflet() %>% addTiles() %>%
  addCircleMarkers( data  = b,
                    #circle size
                    radius  = ~number.of.types,
                    #circle borders
                    color = "black", opacity = 1, stroke = TRUE, weight = 2,
                    #circle inside
                    fillColor = ~ colorGroup( group ), fillOpacity = 0.8 ) 

приводит к

enter image description here

И вам придется добавить код для легенды и всплывающих окон (при необходимости).

...