r - 在 Mapview 中绘制点数据 - 点符号大小的非线性比例?
问题描述
图书馆有没有办法mapview
使用非线性比例绘制点符号的大小?例如,使用几何间隔、自定义间隔向量,还是基于 Jenks 的自然休息方法之类的间隔?(mapview
'线性设置点大小'cex':https ://r-spatial.github.io/mapview/articles/articles/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
解决方案
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 包(v0.3.0)于 2019 年 6 月 5 日创建
推荐阅读
- vue.js - Set-Cookie not accessible through axios or fetch
- amazon-web-services - CDK:模板格式错误:参数计数 63 大于允许的最大值 60
- sql - 在 MSSQL QUERY 中创建表时是否可以为列添加描述
- sql - 如何将 Informatica 的 Normalizer Transformation 转换为 SQL 查询?
- performance - 各种 Power BI 数据源的(相对)性能如何?
- parsing - Haskell:如何将语义空白集成到解析器中?
- oracle - 过程中的相同查询需要不同的时间
- typescript - 反应导航类型检查
- postgresql - 如何在 pgadmin-4 中创建程序?
- python - 在 python 的 azure 函数中安装 google apis 时出错