我对R中的传单和地图还很陌生。我正在尝试可视化R中某些多重限制的交通量。我找到的最接近的答案是:
如何在传单addPolylines中绘制MULTILINESTRING?
但我想根据它们的体积或数量来绘制这些多重限制。我的多重限制数据最初是以字符为单位的,所以我使用"sf"库将它们转换为sfc_multilisting。你可以在这里找到原始数据集
我的样本数据:
data <- data.frame(
multilinestring = c("MULTILINESTRING ((-114.06036700906716 51.04831941917631, -114.05790835100508 51.04824965329041))", "MULTILINESTRING ((-114.06876825342002 50.96863425573366, -114.0714654457777 50.96864796962547))", "MULTILINESTRING ((-114.03372206187294 51.053232488239935, -114.03370889695204 51.05088210489753))"),
VOLUME = c(22000,5000,5000))
转换为sfc_MULTILINESTRING 后
data$geom <- st_as_sfc(data$multilinestring)
我在链接中尝试了相同的代码(我在上面分享过(,但我无法计算颜色强度。
leaflet((data$geom) %>%
addTiles() %>%
addPolygons()
上面的代码绘制了多重限制,但我不知道如何根据它们的VOLUME来更改多重限制的颜色强度。
这就是我最终想要得到的(使用我的完整数据集(:
http://www.gisresources.com/free-u-s-traffic-count-data-use-maptitude-2018-mapping-software/
这是我的系统和R版本:
平台x86_64-w64-mingw32
arch x86_64
os mingw32统x86_64,mingw32
状态
major 4
minor 0.2
svn rev 78730
language R
版本.string R版本4.0.2(2020-06-22(
以下是如何做到这一点。需要指出的几点:
- 我使用
st_as_sf()
,它将数据帧转换为sf对象 - 对于传单,您必须创建自己的调色板(
colorNumeric()
( - 我将整个sf对象传递到对
leaflet()
的调用中
data <- data.frame(
multilinestring = c("MULTILINESTRING ((-114.06036700906716 51.04831941917631, -114.05790835100508 51.04824965329041))", "MULTILINESTRING ((-114.06876825342002 50.96863425573366, -114.0714654457777 50.96864796962547))", "MULTILINESTRING ((-114.03372206187294 51.053232488239935, -114.03370889695204 51.05088210489753))"),
VOLUME = c(22000,5000,5000)
)
data$geom <- st_as_sfc(data$multilinestring)
data <- st_as_sf(data)
pal <- colorNumeric(
palette = "Reds",
domain = data$VOLUME
)
leaflet(data) %>%
addTiles() %>%
addPolylines(color = ~pal(VOLUME))
最后,你需要自定义你的调色板,因为低音量链接显示为一种很难看到的浅色。请参阅此处获取更多指导:https://rstudio.github.io/leaflet/colors.html