2015-03-13 110 views
6

我可以積路易斯安那蠻好的狀態...如何使用ggplot繪製美國城市?

require(ggplot2) 
require(ggmap) 
require(maps) 
LA <- map_data("state", region="louisiana") 
ggplot(LA, aes(x=long, y=lat))+geom_polygon() 

enter image description here

現在,我有多少銷售電話都是在洛杉磯城市特別製作的數據。如何爲每個城市添加銷售電話的點數?

salesCalls <- data.frame(State=rep("louisiana",5), 
          City=c("Baton Rouge", "New Orleans", "Shreveport", "Lafayette", "Mandeville"), 
          Calls=c(10,5,8,13,2)) 
salesCalls 
     State  City Calls 
1 louisiana Baton Rouge 10 
2 louisiana New Orleans  5 
3 louisiana Shreveport  8 
4 louisiana Lafayette 13 
5 louisiana Mandeville  2 
+2

您可能還想使用'+ coord_map()'以使縱橫比更好。 – Gregor 2015-03-13 17:24:14

回答

11
require(ggplot2) 
require(ggmap) 
require(maps) 
LA <- map_data("state", region="louisiana") 

salesCalls <- data.frame(State=rep("louisiana",5), 
         City=c("Baton Rouge", "New Orleans", "Shreveport", 
           "Lafayette", "Mandeville"), 
         Calls=c(10,5,8,13,2)) 

salesCalls <- cbind(geocode(as.character(salesCalls$City)), salesCalls) 

salesCalls 
#   lon  lat  State  City Calls 
# 1 -91.14032 30.45828 louisiana Baton Rouge 10 
# 2 -90.07153 29.95107 louisiana New Orleans  5 
# 3 -93.75018 32.52515 louisiana Shreveport  8 
# 4 -92.01984 30.22409 louisiana Lafayette 13 
# 5 -90.06563 30.35825 louisiana Mandeville  2 

ggplot(LA, aes(x=long, y=lat)) + 
    geom_polygon() + 
    coord_map() + 
    geom_point(data=salesCalls, aes(x=lon, y=lat, size=Calls), color="orange") 

ggplot2

在一個谷歌地圖:

ggmap(get_map(location = 'Louisiana', zoom = 7)) + 
    geom_point(data=salesCalls, aes(x=lon, y=lat, size=Calls), color="orange") 

Google Map

+0

謝謝。我真的很感興趣,現在讓谷歌地圖工作,但是當我執行你的代碼時,我所得到的只是帶有橙色點(它們應該是的地方)的灰色ggplot背景。換句話說,沒有地圖。任何想法爲什麼? – Ben 2015-03-13 20:10:19

+0

@Ben嘗試運行'get_map(location ='Louisiana',zoom = 7)'看看會發生什麼。你在代理服務器後面嗎?我還注意到我的代碼有一個錯字,可能會是這樣,但仔細檢查「路易斯安那州」的拼寫 – JasonAizkalns 2015-03-13 20:24:09

+0

沒關係 - 我認爲這個問題比我最初預期的要深一點。 – Ben 2015-03-13 20:24:58

0

下面的腳本應該對谷歌地圖的工作部分:

ggmap(get_map(location ='Louisiana',zoom = 7))+ geom_point(data = salesCalls,aes(x = salesCalls $ lon,y = salesCalls $ lat,size = salesCalls $ Calls),color =「orange」 )