2014-02-17 46 views

回答

3

1)您需要獲取任何程序繪製地圖所需的shapefile - 這些基本上定義了多邊形創建形狀(狀態,拉鍊,csa等)。在美國人口普查局提供那些

http://www.census.gov/cgi-bin/geo/shapefiles2013/main

(我很抱歉,但這些是如此之大,我不能提供一個例子中的數據)。解壓縮並將它們放到您選擇的目錄中。 2)使用包maptools中的readShapeSpatial,需要將文件導入到R中的空間數據框對象中。在我的情況下,我讀了2個文件,描述繪製邊界和csa文件來繪製城域。爲了簡單起見,我在每個中創建了一個id字段,這不是必需的。請注意rgeos需要,以及在默認情況下maptools嘗試使用gpoclib但也有一些許可證的問題,rgeos能源部鼻涕有那些

require(maptools) 
require(rgeos) 
cbsa_bdry = readShapeSpatial("tl_2013_us_csa.shp") 
[email protected]$id <- as.character([email protected]$GEOID) 
state_bdry = readShapeSpatial("tl_2013_us_state.shp") 
[email protected]$id <- as.character([email protected]$STUSPS) 

3)的文件需要強化在ggplot使用 - 遠因爲我可以告訴這是從空間數據集創建繪圖的數據框。我不明白,但它是必要的。在這裏使用id字段 - 在我的情況下,狀態和CSA數

cbsa_map_f <- fortify(cbsa_bdry, region="id") 
state_map_f <- fortify(state_bdry, region="id") 

此時設防文件可使用ggplot映射,但通常你想一些其他數據與他們進行映射,例如定義形狀顏色的興趣變量(可以說擁有州長官邸的聚會,或者平均收入,或者任何你的分析指定的)

4)我將合併空間的數據部分這個例子中的數據框,在這種情況下,我不支付任何其他數據。請注意,我學會了使用合併可能會由於排序而弄亂數據的困難方式,如果使用合併,請確保數據未被排序爲其中的一部分,因此我正在使用join。

require(plyr) 
state_map_df <-join(state_map_f, [email protected], by="id") 
state_map_df$state <- state_map_df$STUSPS 

5)做你的圖表 - 你需要繪製層,從而,底層第一,然後第二個,或者一個可以掩蓋其他。爲了簡單起見,我只繪製德克薩斯

tx <-subset(cbsa_map_df,state=="TX") 
tx1 <- subset(state_map_df,state=="TX") 
require(ggplot2) 
require(mapproj) 

sample <- ggplot(NULL) +geom_polygon(data=tx1,aes(long,lat,group=group),color="blue",fill="light gray")+coord_map(projection="mercator")+theme_bw() 
sample <- sample + geom_polygon(data=tx,aes(long,lat,fill=NAME,group=group),color="black")+theme(legend.position="bottom",axis.text.x = element_blank(),axis.text.y = element_blank(),axis.ticks = element_blank()) 
sample<- sample+guides(fill=guide_legend(title="MSA Name",nrow = 3,title.position="top",title.hjust=0.5,title.theme=element_text(face="bold",angle=0))) 
sample <- sample + scale_x_continuous("")+scale_y_continuous("") 
sample 

我不傳遞dataframne到初始gplot調用來打開圖表作爲各層使用的數據的數據幀不同。如果我合併的數據使用一個連續的尺度我會使用的填充=爲CSA部分

enter image description here

+0

我是想回饋社會 - 這花了很多的精力去做它非常有用 – user1617979