M.Teich
M.Teich

Reputation: 607

Standardising point size across groups

Using zcol, cex and burst it is possible to adjust the size of all levels within a point layer in mapview. However, the size of each point is relative only to the size of other points WITHIN that same level. For example, in the following code, the size of a point with number.of.types value 14 in group a is the same as number.of.types value 6 in group 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)

Is it possible to standardise the size of points across levels without resorting to having to define this for each layer level individually?

Upvotes: 2

Views: 482

Answers (1)

Wimpel
Wimpel

Reputation: 27742

update

I just discovered that setting the burst-argument to FALSE seems to do the trick?

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

enter image description here

previous answer

I'm not sure about mapview-options, since I rarely use the function.

You could try reprocuding the map you desire with leaflet (which is what mapview uses if I remember correctly).

It requires a bit more lines of code though..

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 ) 

results in

enter image description here

And you would have to add code for legend and popups (if needed).

Upvotes: 4

Related Questions