построение точечных данных в Mapview - нелинейный масштаб для размеров символов точек? - PullRequest
1 голос
/ 05 июня 2019

Есть ли способ с библиотекой mapview для отображения размера точечных символов с использованием нелинейной шкалы? Например, с геометрическими интервалами, пользовательским вектором интервалов или интервалами, основанными на чем-то вроде метода естественных разрывов Дженкса? (mapview 's' размер точки установки 'cex' линейно ': https://r -spatial.github.io / mapview / статьи / статьи / mapview_02-advanced.html )

Мой пример использования - построение множества точек данных о расходе речного газа, но чрезвычайно высокие и низкие значения на побережье от приливов океана доминируют в масштабе, до такой степени, что, по-видимому, практически все не прибрежные местоположения имеют размеры символов ( представляет речной поток), которые едва различимы, в то время как я надеюсь, что пользователь может легко визуализировать различия, такие как ручьи и реки (например, здесь, три группы со значениями в 1000-х, другая в 5000-х и другая в 9000-х).

library(mapview)
library(sf)

lat <- seq(1, 20, 1)
lon <- lat
value_to_visualize <- c(461000, 1500, 1400, 1450, 1350, 1100, 1400, 2000, 9040, 9060, 
                    9080, 9990, 9995, 5750, 5500, 5400, 5300, 5100, 5050, -60000)

df <- data.frame(lat,lon, value_to_visualize)
df <- st_as_sf(df, coords = c("lon", "lat"), crs = 4326) 

m <- mapview(df["value_to_visualize"], 
         cex = "value_to_visualize",
         legend = TRUE,
         layer.name = "cfs")  
m

enter image description here

1 Ответ

1 голос
/ 05 июня 2019
library(mapview)
library(sf)

lat <- seq(1, 20, 1)
lon <- lat
value_to_visualize <- c(461000, 1500, 1400, 1450, 1350, 1100, 1400, 2000, 9040, 9060, 
                        9080, 9990, 9995, 5750, 5500, 5400, 5300, 5100, 5050, -60000)


cluster_to_visualize <- dplyr::case_when(value_to_visualize<1000 ~ 1,
                                         value_to_visualize<5000 ~ 3,
                                         value_to_visualize<9000 ~ 5,
                                         value_to_visualize>9000 ~ 7)

df <- data.frame(lat,lon, cluster_to_visualize, value_to_visualize)
df <- st_as_sf(df, coords = c("lon", "lat"), crs = 4326) 

m <- mapview(df["value_to_visualize"], 
             cex = df$cluster_to_visualize,
             legend = TRUE,
             layer.name = "cfs") 

Создано в 2019-06-05 пакетом Представления (v0.3.0)

...