33

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

有没有允许我这样做的包和代码?

4

8 回答 8

39

我假设你想要静态地图。

替代文字
(来源:eduardoleoni.com

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

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

例如(假设您在地图子目录中有马里兰形状文件):

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()
于 2009-09-18T18:21:07.437 回答
10

在 R 中有很多方法可以做到这一点(参见空间视图);其中许多依赖于“地图”包

于 2009-09-18T01:51:40.473 回答
3

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

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

于 2009-09-17T23:21:25.737 回答
3

在 Python 中,您可以将来自美国人口普查的 shapefile 与basemap包一起使用。这是根据人口填写州的示例。

于 2009-12-09T04:38:07.133 回答
1

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

如果您正在寻找一个免费的、非常实用的地图应用程序,我可以建议:

地图窗口 (mapwindow.com)

于 2009-09-18T01:48:30.683 回答
1

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

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

于 2009-09-18T01:50:41.490 回答
0

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

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

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

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

http://benfry.com/zipdecode/

于 2009-09-17T23:11:05.347 回答
0

查看 IBM http://manyeyes.alphaworks.ibm.com/manyeyes/这个优秀的在线可视化工具

编辑仅供参考,ManyEyes 使用Prefuse 可视化工具包进行一些可视化。尽管它是一个基于 java 的框架,但它们也为 Web 提供了 Flash/ActionScript 工具。

于 2009-09-17T23:19:55.660 回答