r - 绘制澳大利亚各州的叶绿素图
问题描述
我绘制了澳大利亚各州的点密度图,现在正尝试使用传单包绘制澳大利亚各州的叶绿素图,并按计数值为每个州着色。我有以下数据框
state count latitude longitude
Australian Capital Territory 125 ... ...
New South Wales 45
Northern Territory 75
Queensland 12
South Australia 245
Tasmania 4895
Victoria 279
以下是我用来绘制点密度图的代码
leaflet(aus_state_counts) %>%
addTiles() %>%
addCircleMarkers(
layerId = ~state,
label = ~state,
radius = ~count
) %>%
fitBounds(lng1 = max(aus_state_counts$longitude) ,lat1 = max(aus_state_counts$latitude),
lng2 = min(aus_state_counts$longitude) ,lat2 = min(aus_state_counts$latitude)
)
我不确定如何在地图上绘制状态?我需要额外的信息吗?
解决方案
对于 choropleth 地图,您将需要一些形状文件 (.shp) 或 GeoJSON (.geojson) 形式的空间多边形数据。下面应该工作。
library(sf)
library(leaflet)
library(dplyr)
# GeoJSON Data
states <- read_sf("https://raw.githubusercontent.com/rowanhogan/australian-states/master/states.geojson")
counts <- data.frame(state=c("Australian Capital Territory", "New South Wales", "Northern Territory", "Queensland",
"South Australia", "Tasmania", "Victoria"), count=c(125,45,75,12,245,4895,279))
# Join to count data
data <- states %>%
dplyr::left_join(counts, by=c("STATE_NAME" = "state"))
# Specify choropleth colors
pal <- colorQuantile("Blues", domain = data$count)
# Plot Map
leaflet(data) %>%
addTiles() %>%
addPolygons(fillColor=~pal(count), fillOpacity=0.8, color="white", weight=1)
推荐阅读
- docker - 通过 docker swarm 使用自定义服务发现
- angular - 尝试验证 Azure AD 令牌时出现错误“IDX10511:签名验证失败”
- python - Python 解析器,Str
- pyvmomi - pyvmomi 检索所有虚拟机的自定义属性“所有者”
- mongodb - Mongodb,如果存在则替换,否则创建新文档,
- android - 为什么谷歌地图不会出现在颤振中?
- python - 如何用另一个参数中的字符串替换数组中的元素
- php - 分页记录编号
- java - 如何找到菜单栏在页面上可见 x 个选项卡
- javascript - 使用 setInterval 创建进度条