2010-11-02 82 views
2

我很抱歉,因爲我確定這是一個基本問題。我想要做的就是使用地圖包在R中創建一個非常簡單的等值線地圖。這是我在R中映射任何數據的第一次嘗試。R中的基本Choropleth狀態圖

我的地理位置是包括DC在內的較低的48個州。以下是我想要繪製的數據集的前幾行。

> head(choro, n=7) 
    AL  AR  AZ  CA  CO  CT  DC 
"red" "red" "red" "blue" "blue" "blue" "red" 

當我嘗試繪製基本圖:

map("state", 
     regions = names(choro), 
     lty = 1, lwd =1, 
     boundary=TRUE, 
     fill=TRUE, 
     col=choro) 

attached image是我所看到的。我是R新手,但我想象未填寫的狀態不能正確合併,但我相信我正在使用「標準」狀態縮寫。

我做錯了什麼/需要解決?

任何幫助將非常感激。

+0

對於這樣的人羣,我建議查看choroplethr軟件包。它旨在簡化此:https://github.com/trulia/choroplethr – Ari 2014-03-19 23:19:59

回答

4

如果你拿出regions = names(choro),你會得到一個更加完整的地圖。如果你想要choro矢量中可能丟失的項目被繪製,那麼爲什麼不用「白色」代替顏色呢? alt text如果您需要更完整的答案,請提供choro的完整副本。

choro <- c("red", "red", "red" ,"blue" ,"blue", "blue", "red") 
require(maps) 
data(state) 
names(choro) <-names(state)[1:7] 
map("state", lty = 1, lwd =1, 
     boundary=TRUE, fill=TRUE, 
     col=choro) 

見所附圖片:

+0

當我刪除地區線,我的地圖是完全填充。然而,我懷疑我必須安排我的矢量choro中的數據來匹配各州的順序,如果它有效的話,這很好。最簡單的數據排列方式?沒問題。 – Btibert3 2010-11-02 02:10:55

+0

沒錯。顏色矢量得到回收,所以任何你想成爲輪廓的狀態都需要一個「白色」的顏色。要查看正確的狀態縮寫,請鍵入> state.abb – 2010-11-02 03:31:11

1

相關的問題在這裏:Choropleth mapping issue in R 和指南這裏:http://www.thisisthegreenroom.com/2009/choropleths-in-r/

正如前面提到的,你會想與繪製的區域合併你的顏色。上面的第二個鏈接顯示了一種技術來匹配狀態縮寫與R想要/需要使用地圖包的完整狀態名稱。取決於你的數據來自哪裏,在讀入R之前用狀態名稱替換狀態縮寫可能是最簡單的。注意的另一個結果是有63個狀態對象被繪製。例如,New Yorsk有幾個不同的對象。映射到這些副本將是必要的完整的外觀地圖。

我會建議打map函數的兩個調用 - 第一個繪製你的填充,第二個添加一個不同的大綱。例如:

# Extract mapnames for States 
mapnames <- data.frame(
    state = map("state",plot=FALSE)[4]$names 
    , col = sample(c("pink", "purple", "lavender", "blue"), 63, replace = TRUE) 
) 

#Plot the colors 
map("state", regions = mapnames$state, col = mapnames$col, fill = TRUE, lty = 1, lwd= 1) 
#Plot the outlines 
map("state", regions = mapnames$state, col = "black", fill = FALSE, add = TRUE, lty = 1, lwd = 1) 

您還可以看看map_data()功能ggplot2用於合併數據輕鬆創建等值線圖的其他例子。

+0

感謝您的鏈接。我看到了綠屋教程,這讓我頭腦發熱。這似乎更符合我對R的工作知識。我會給它一個機會。謝謝!! – Btibert3 2010-11-02 13:44:43