在Mapview中绘制点数据-点符号大小的非线性比例?

时间:2019-06-05 19:59:29

标签: r plot leaflet r-mapview

mapview库中是否可以使用非线性标度来绘制点符号的大小?例如,具有几何间隔,自定义间隔矢量,或基于类似于Jenks的自然断裂方法的间隔? ({mapview的'设置点大小'cex'线性':https://r-spatial.github.io/mapview/articles/articles/mapview_02-advanced.html

我的用例是绘制河测距流量数据的许多点,但是海洋潮汐沿岸的巨大高低值主导了尺度,以至于基本上所有非沿海地区似乎都具有符号大小(表示河流流量)几乎没有区别,而我希望用户可以轻松地看到小溪与河流之间的差异(例如,这里的三个组的值在1000年代,另一个在5000年代,另一个在9000年代)。 / p>

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 个答案:

答案 0 :(得分:1)

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") 

reprex package(v0.3.0)于2019-06-05创建