mapview: стандартизация размера точки по группам

С помощью 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 ответ

Решение

Обновить

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

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

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

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

Вы можете попробовать воспроизвести желаемую карту с помощью листовки (это то, что использует 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 ) 

приводит к

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

Другие вопросы по тегам