[英]Plotting color map with zip codes in R or Python
我有一些美國人口統計和公司數據。
我想在一個州或一個較小的地區(例如城市)繪制郵政編碼區域。 每個區域將由特定於該區域的顏色和/或文本注釋。 輸出類似於http://maps.huge.info/,但a)帶有注釋文本; b)pdf輸出; c)R或Python中的腳本。
是否有任何包和代碼可以讓我這樣做?
我假設你想要靜態地圖。
(來源: eduardoleoni.com )
1)在census.gov獲取zip邊界和狀態邊界的shapefile:
2)使用我在這個SO問題中發布的plot.heat函數。
例如(假設您在map子目錄中有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()
在R中有很多方法可以做到這一點(參見空間視圖 ); 其中許多依賴於“地圖”包 。
看看這個美國2004年大選的一個很酷的例子 。 最終看起來像這樣:
這是一個使用“maps”包和“lattice”的模型的一個稍微丑陋的例子。
這是一個使用“gmaps”軟件包的非常簡單的示例,該軟件包顯示了針對謀殺案每10萬人被捕的國家逮捕地圖:
require(gmaps) data(USArrests) attach(USArrests) grid.newpage() grid.frame(name="map") grid.pack("map",USALevelPlot(states=rownames(USArrests),levels=Murder,col.fun=reds),height=unit(1,'null')) grid.pack("map",gradientLegendGrob(at=quantile(Murder),col.fun=reds),side="bottom",height=unit(.2,'npc')) detach(USArrests)
有人可能會有更直接的東西給你,但我發現O'Reilly的'R中的數據混搭'非常有趣......部分地,它是家庭止贖拍賣的空間映射。
在Python中,您可以使用美國人口普查中的shapefile和basemap
包。 以下是根據人口填寫州的示例。
R中有一個豐富而復雜的軟件包系列,用於繪制,分析和與GIS相關的其他功能。 一個開始的地方是空間數據的CRAN任務視圖:這是一個復雜的,有時是神秘的世界,需要一些工作才能理解。
如果您正在尋找一個免費的,功能強大的地圖應用程序,我可以建議:
MapWindow(mapwindow.com)
TechCrunch Trends的Daniel Levine用R中的maps
包做了很好的事情。他的網站上也有代碼。
如果你想學習(類似Java的)新語言,那么保羅關於加工的建議 - 本弗里曾用來制作zipdecode - 也是一個很好的建議。
根據您的應用程序,很長一段時間可能會使用這樣的東西:
http://googlemapsmania.blogspot.com/2006/07/new-google-maps-us-zip-code-mashups.html
映射數據。 如果那不是您想要的,您可以從census.gov獲取原始郵政編碼shapefile並手動完成,這非常痛苦。
此外,如果你還沒有看到它,這是一種與類似數據交互的簡潔方法,並可能提供一些指示:
查看IBM出色的在線可視化工具http://manyeyes.alphaworks.ibm.com/manyeyes/
EDIT FYI,ManyEyes使用Prefuse可視化工具包來實現它的一些功能。 盡管它是基於java的框架,但它們還為Web提供了Flash / ActionScript工具。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.