首页 > 解决方案 > 绘制澳大利亚各州的叶绿素图

问题描述

我绘制了澳大利亚各州的点密度图,现在正尝试使用传单包绘制澳大利亚各州的叶绿素图,并按计数值为每个州着色。我有以下数据框

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

我不确定如何在地图上绘制状态?我需要额外的信息吗?

标签: rleaflet

解决方案


对于 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)


推荐阅读