2013-03-28 47 views
8

我很新的R和我只是用了一個項目,繪製阿拉巴馬縣的人口預計增長從2010年至2020年在這裏玩耍是我的代碼:省略一些邊界在ggplot/ggmap

dat <- read.table("C:/Users/rasmus/Documents/countyinfo.txt", sep="\t", header=TRUE) 

library(ggplot2) 
library(maps) 
library(ggmap) 

mdat <- map_data('county') 
str(mdat) 
al1 = get_map(location = c(lon = -86.304474, lat = 32.362563), 
       zoom = 7, maptype = 'roadmap') 
al1MAP = ggmap(al1) + 
     geom_point(data=dat,inherit.aes = FALSE, 
        aes(y=Lat, x=Lon, map_id=County, size=Growth), col="red") + 
     borders("state", colour="red", alpha=0.8) + 
     borders("county", colour="blue", alpha=0.5) 
al1MAP 

現在,我有兩個問題。

1)國界似乎在做奇怪的事情。這裏的同縣覆蓋的截圖關閉:

enter image description here

2)鑑於這是隻有阿拉巴馬州,我想談談境外國家接壤了,但我不知道該怎麼辦那。我的猜測是試驗xlimylim,但我不知道如何將它們限制在阿拉巴馬州邊界多邊形。

回答

12

看來,與功能borders()爲一些國家的座標連接在一起。

要解決此問題,您可以使用map_data()state邊框存儲爲單獨的數據框,然後使用geom_path()state邊框添加到您的地圖。在geom_path()中添加group=region以確保點只根據一個區域進行連接。

要爲阿拉巴馬州縣顯示邊界,您應該將參數region="alabama"添加到函數borders()

al1 = get_map(location = c(lon = -86.304474, lat = 32.362563), 
     zoom = 6, maptype = 'roadmap') 
mdat <- map_data('state') 
ggmap(al1) + 
    geom_path(data=mdat,aes(x=long,y=lat,group=region),colour="red",alpha=0.8)+ 
    borders("county", colour="blue", alpha=0.5,region="alabama") 

enter image description here

+0

謝謝!這工作出色。我不知道這裏是否有禮節來問這是一個不同的問題,但我只想在這裏問 - 有什麼方法可以基於截斷將點分成兩種不同的顏色? (即如果增長> 0,則「藍色」或「紅色」)。 – 2013-03-28 11:02:08

+0

我一直在與scale_color_manual鬼混,但我沒有得到它的工作。我嘗試過的兩件事主要是定義一個函數,如果x> 0,「紅色」,「藍色」,然後調用它,但然後我得到像 「錯誤ifelse(增長<0,」紅色「 ,「blue」):object'Growth'not found「 我也嘗試在 」aes(color = Growth> 0)+ scale_colour_manual(values = c(「red」,「blue」)) 「,但是它正確地抱怨」二元運算符的非數字參數「。 我對這個基本問題提出質疑很不好,但我對這個計劃真的很陌生。 – 2013-03-28 11:07:19

+2

@LuciusSergiusCatilina嘗試geom_point(data = dat,inherit.aes = FALSE,aes(y = Lat,x = Lon,size = Growth,color = Growth> 0))+ scale_colour_manual(values = c(「red」,「藍色「)) – 2013-03-28 11:12:16