19

我正在尝试制作非常简单的数据的等值线,这有点让人头疼。我在美国东部有以下邮政编码。这是组成的数据,但你明白了。

Zip    Freq
11101    10
10014    15
11238   400

等约100行。Freq 的值范围为 0-1000,这些是我想用来确定每个邮政编码颜色的值。理想情况下,我还希望地图专注于美国东部而不是整个国家。

我想用这些数据和每个邮政编码制作一个等值线,但我不知道如何导入邮政编码 shapefile。我已经尝试过本教程,但我在 fortify() 步骤中遇到了一个我无法超越的错误。我不确定该教程的方法是否是最好的方法。

ggplot2 似乎与州和县一起提供,但我不知道如何按邮政编码进行映射。(最终我将按人口普查区进行地图绘制,但现在我只想学习如何将 shapefile 用于邮政编码和这个简单的数据集)

我为 choroplethr 找到的所有资源都使用现在已弃用的功能。我花了几个小时追着我的尾巴努力使用它,我很沮丧,所以任何帮助都将不胜感激。

4

1 回答 1

14

感谢您使用choroplethr,很抱歉 的弃用给zip_map您带来了问题。我已将所有与 ZIP 相关的功能移动到一个名为choroplethrZip的单独打包中。

旧版本的 choroplethr 将 ZIP 呈现为散点图,而不是 choropleth。将它们渲染为适当的 choropleths 需要一个对于 CRAN (~60MB) 来说太大的地图,这就是它只能通过 github 获得的原因。

我在上面链接到的 github 页面有 3 个小插曲。基本上,该功能zip_choropleth应该完全按照您的意愿行事,并且像所有其他choroplethr功能一样工作。您想使用state_zoom放大东海岸各州:

# use the devtools package from CRAN to install choroplethrZip from github
install.packages("devtools")
library(devtools)
install_github('arilamstein/choroplethrZip@v1.3.0')
library(choroplethrZip)

data(df_pop_zip)

# ec = east coast
ec_states = c("maine", "new hampshire", "massachusetts", "rhode island", "connecticut", 
              "new york", "new jersey", "delaware", "maryland", 
              "virginia", "north carolina", "south carolina", "georgia", "florida",
              "pennsylvania", "district of columbia", "vermont", "west virginia")

zip_choropleth(df_pop_zip, 
               state_zoom = ec_states, 
               title      = "2012 ZCTA Population Estimates",
               legend     = "Population") + coord_map()    

在此处输入图像描述

生成的地图本质上是不可读的,因为拉链太小了,你只能看到边界。如果要删除边框,请尝试以下操作:

choro = choroplethrZip::ZipChoropleth$new(df_pop_zip)
choro$prepare_map()

data(zip.regions)
choro$legend = "Population"
ec_zips = zip.regions[zip.regions$state.name %in% ec_states, "region"]
ec_df   = choro$choropleth.df[choro$choropleth.df$region %in% ec_zips, ]
ec_plot = choro$render_helper(ec_df, "", choro$theme_clean()) + 
              ggtitle("2012 ZCTA Population Estimates")

ec_plot + coord_map() 

在此处输入图像描述

将来,我可能会添加一个选项,以便更轻松地渲染无边界的地图。但就目前(1.3.0 版)而言,这是我能看到的最简单的方法,基本上是我在后台渲染国家邮政编码地图的工作,这些地图本身是无边界渲染的。

请注意,这coord_map只是强制墨卡托投影。

于 2015-06-15T23:19:15.307 回答