【问题标题】:Plotting color map with zip codes in R or Python在 R 或 Python 中使用邮政编码绘制颜色图
【发布时间】:2010-11-29 07:52:45
【问题描述】:

我有一些美国人口统计和企业统计数据。
我想绘制一个州或较小区域(例如城市)的邮政编码区域。每个区域将由特定于该区域的颜色和/或文本进行注释。输出将类似于http://maps.huge.info/,但 a) 带有带注释的文本; b) pdf 输出; c) 可在 R 或 Python 中编写脚本。

是否有任何包和代码允许我这样做?

【问题讨论】:

    标签: python r graphics zipcode


    【解决方案1】:

    在 Python 中,您可以使用来自美国人口普查的 shapefile 以及 basemap 包。下面是一个filling in states 的例子,按人口统计。

    【讨论】:

      【解决方案2】:

      我假设您想要静态地图。


      (来源:eduardoleoni.com

      1) 在 census.gov 获取zip 边界和state 边界的 shapefile:

      2) 使用我在SO question 中发布的 plot.heat 函数。

      例如(假设您在地图子目录中有 maryland shapefile):

      library(maptools)
      ##substitute your shapefiles here
      state.map <- readShapeSpatial("maps/st24_d00.shp")
      zip.map <- readShapeSpatial("maps/zt24_d00.shp")
      ## this is the variable we will be plotting
      zip.map@data$noise <- rnorm(nrow(zip.map@data))
      ## put the lab point x y locations of the zip codes in the data frame for easy retrieval
      labelpos <- data.frame(do.call(rbind, lapply(zip.map@polygons, function(x) x@labpt)))
      names(labelpos) <- c("x","y")                        
      zip.map@data <- data.frame(zip.map@data, labelpos)
      ## plot it
      png(file="map.png")
      ## plot colors
      plot.heat(zip.map,state.map,z="noise",breaks=c(-Inf,-2,-1,0,1,2,Inf))
      ## plot text
      with(zip.map@data[sample(1:nrow(zip.map@data), 10),] , text(x,y,NAME))
      dev.off()
      

      【讨论】:

      • www.census.gov 上的 shape 文件的链接已损坏……我花了一段时间才找到它们。试试这个网址:census.gov/cgi-bin/geo/shapefiles2010/main。然后使用下拉菜单选择“邮政编码制表区”和“州(及等价物)”。
      • 您介意解释一下如何从具有邮政编码列和其他一些数据列的 csv 文件映射值以使用它(如果答案很明显,请道歉,但我真的不知道完全没有)?具体来说,我无法弄清楚我应该为zip.map@data$noise &lt;- rnorm(nrow(zip.map@data)) labelpos &lt;- data.frame(do.call(rbind, lapply(zip.map@polygons, function(x) x@labpt)))zip.map@data &lt;- data.frame(zip.map@data, labelpos) 提供什么
      • 如果该站点因维护而关闭,您可以使用此链接:census.gov/cgi-bin/geo/shapefiles/index.php
      【解决方案3】:

      在 R 中有很多方法可以做到这一点(参见spatial view);其中有很多depend on the "maps" package

      【讨论】:

      • 这些例子似乎是在县,而不是邮政编码,级别
      【解决方案4】:

      Daniel Levine at TechCrunch Trends 在 R 中使用 maps 包做了很多好事。他的网站上也有代码。

      如果您准备学习一门(类 Java)新语言,Paul 关于研究处理(Ben Fry 用来制作 zipdecode)的建议也是一个很好的建议。

      【讨论】:

      • 感谢马特,是的,趋势图是邮政编码级别的,但实际上我没有将邮政编码区域着色,而是将邮政编码映射到纬度/经度坐标。不过欢迎任何人使用代码。
      【解决方案5】:

      R 中有一系列丰富而复杂的软件包,可用于绘图、分析和其他与 GIS 相关的功能。一个开始的地方是Spatial Data 上的 CRAN 任务视图: 这是一个复杂的,有时是神秘的世界,需要一些工作才能理解。

      如果您正在寻找一款免费的、功能强大的地图应用程序,我建议您:

      地图窗口 (mapwindow.com)

      【讨论】:

      • 我在 CRAN 视图中找不到任何可以帮助我在地图上可视化邮政编码统计信息的内容。我得到的最接近的是 murL 包。
      【解决方案6】:

      查看 IBM 提供的这款出色的在线可视化工具 http://manyeyes.alphaworks.ibm.com/manyeyes/

      编辑仅供参考,ManyEyes 将Prefuse visualization toolkit 用于其某些可视化。尽管它是一个基于 java 的框架,但它们也为 web 提供了 Flash/ActionScript 工具。

      【讨论】:

      • 这不就是几年前汉斯·罗斯林在 TED 上展示的东西吗
      • 很好,但是 manyeyes 没有回答我的问题。我认为它与gapminder有很大不同。 Wattenberg 是一名可视化专家,Rosling 是一名社会科学家,不同的方法表明了这一点。
      【解决方案7】:

      可能有人对您有更直接的建议,但我发现 O'Reilly 的“R 中的数据混搭”非常有趣……在某种程度上,它是房屋止赎拍卖的空间映射。

      http://oreilly.com/catalog/9780596804770/

      【讨论】:

      • 另外,没有 DRM,只需 5 美元...很难击败这笔交易!
      【解决方案8】:

      根据您的应用程序,很长的路要走可能是使用这样的东西:

      http://googlemapsmania.blogspot.com/2006/07/new-google-maps-us-zip-code-mashups.html

      映射您的数据。如果这不是您想要的,您可以从 census.gov 获取原始邮政编码 shapefile 并手动执行,这很痛苦。

      另外,如果您还没有看到,这是一种与类似数据交互的巧妙方法,并且可能会提供一些指导:

      http://benfry.com/zipdecode/

      【讨论】:

      • 也不错,但这些是邮政编码位置/边界的可视化。我正在寻找一种在 R 或 Python 中使用自定义颜色或文本注释的 zip 区域生成地图的灵活方式。
      猜你喜欢
      • 1970-01-01
      • 2015-05-16
      • 2019-02-20
      • 2020-10-12
      • 2020-04-19
      • 1970-01-01
      • 2023-04-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多