【问题标题】:Plot county level data with tooltips in R在 R 中使用工具提示绘制县级数据
【发布时间】:2013-06-19 01:04:26
【问题描述】:

我在 www.betydb.org 上看到了美国县级的交互式等值线地图。我想使用 R 重现类似的地图。我只想要地图和工具提示(不是所有不同缩放级别的图块,或者切换地图的能力)

地图当前在ruby 中创建,弹出窗口(在左下角)查询 MySQL 数据库。写它的程序员已经走了,我对 Ruby 不熟悉。

在这里,我将从一个 csv 文件开始。数据包括州和县名称,以及州和县 FIPS。我想绘制Avg_yield

mydata <- read.csv("https://www.betydb.org/miscanthus_county_avg_yield.csv")
colnames(mydata)
#  [1] "OBJECTID"    "Join_Count"  "TARGET_FID"  "COUNTY_NAME" "STATE_NAME"  "STATE_FIPS" 
#  [7] "CNTY_FIPS"   "FIPS"        "Avg_lat"     "Avg_lon"     "Avg_yield"  

我可以使用 googleVis 包在州级别进行绘图

library(googleVis)
p <- gvisGeoChart(data = mydata, locationvar="STATE_NAME", colorvar = 'Avg_yield',
                  options= list(region="US", displayMode="regions", 
                  resolution="provinces"))
plot(p)

这提供了状态级别的着色。我的问题是,我怎样才能在县级(而不是州级)分辨率上获得这样的颜色和工具提示?

gvisGeoChart 帮助(在区域和分辨率下)和Google chart documentation 表明这可能是不可能的,但是文档非常广泛,以至于不清楚我在 R 中的其他选项是什么。

那么,有没有办法在县级获得带有工具提示和着色的地图?

【问题讨论】:

  • 我一直在绘制一张类似的美国地图。谷歌图表有一个可以在 R 中使用的选项:resolution = "metros"

标签: r google-maps plot tooltip


【解决方案1】:

这是一个来自 2013 年的问题。我不确定 leaflet 包当时是否已经发布。现在已经是2017年末了,你的任务是有可能完成的。如果您仍然需要执行类似的任务,我想为您留下以下内容。在这种情况下,数据集中有一些缺失的县。这些县存在于美国多边形数据中,但它们在 mydata 中缺失。所以我使用setdiff()bind_rows() 将这些县添加到mydata。当您绘制传单地图时,您需要指定您的调色板。 Avg_yield 是一个连续变量。所以你使用colorNumeric()。我留下了一张显示传单地图一部分的屏幕截图。

library(raster)
library(leaflet)
library(tidyverse)

# Get USA polygon data
USA <- getData("GADM", country = "usa", level = 2)

### Get data
mydata <- read.csv("https://www.betydb.org/miscanthus_county_avg_yield.csv",
                   stringsAsFactors = FALSE) %>%
          dplyr::select(COUNTY_NAME, Avg_yield)

### Check counties that exist in USA, but not in mydata
### Create a dummy data frame and bind it with mydata

mydata <- data.frame(COUNTY_NAME = setdiff(USA$NAME_2, mydata$COUNTY_NAME),
                     Avg_yield = NA,
                     stringsAsFactors = FALSE) %>%
          bind_rows(mydata)

### Create a color palette
mypal <- colorNumeric(palette = "viridis", domain = mydata$Avg_yield)

leaflet() %>% 
addProviderTiles("OpenStreetMap.Mapnik") %>%
setView(lat = 39.8283, lng = -98.5795, zoom = 4) %>%
addPolygons(data = USA, stroke = FALSE, smoothFactor = 0.2, fillOpacity = 0.3,
            fillColor = ~mypal(mydata$Avg_yield),
            popup = paste("Region: ", USA$NAME_2, "<br>",
                          "Avg_yield: ", mydata$Avg_yield, "<br>")) %>%
 addLegend(position = "bottomleft", pal = mypal, values = mydata$Avg_yield,
           title = "Avg_yield",
           opacity = 1)

【讨论】:

  • 这张地图显示了整个北美。你如何改变它只显示美国,包括阿拉斯加和夏威夷?
猜你喜欢
  • 2011-11-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-20
  • 1970-01-01
相关资源
最近更新 更多