2012-06-22 74 views
4

我使用ggmap和ggplot軟件包繪製兩個不同的數據幀的經度和緯度座標在聖保羅地圖和希望手動標記每個傳奇層:如何更改ggplot圖例標籤和名稱與兩個圖層?

更新:我編輯我下面的代碼變成完全可再現(我使用地理編碼功能而不是get_map)。

更新:我想這樣做,而不結合數據幀。

require(ggmap) 

sp <- get_map('sao paulo', zoom=11, color='bw') 
restaurants <- data.frame(lon=c(-46.73147, -46.65389, -46.67610), 
          lat=c(-23.57462, -23.56360, -23.53748)) 
suppliers <- data.frame(lon=c(-46.70819,-46.68155, -46.74376), 
         lat=c(-23.53382, -23.53942, -23.56630)) 
ggmap(sp)+geom_point(data=restaurants, aes(x=lon, y=lat),color='blue',size=4)+geom_point(data=suppliers, aes(x=lon, y=lat), color='red', size=4) 

enter image description here

我已經看過的幾個問題,並試圖沒有成功不同的方式。有誰知道我如何插入圖例並將藍點標記爲餐廳和紅點作爲供應商?

+1

聯合數據幀。添加第三個變量以指示rest/supp。將顏色映射到第三個變量。 – joran

+1

我應該補充說我要寫一個完整的答案,但是你的代碼是不可重現的。 – joran

+0

對不起@Joran。我的代碼有錯誤,但我已經更正了它。它現在應該完全可重現。謝謝。 –

回答

8

現在,你的代碼是可重複的(感謝!):

dat <- rbind(restaurants,suppliers) 
dat$grp <- rep(c('Restaurants','Suppliers'),each = 3) 

ggmap(sp) + 
    geom_point(data=dat, aes(x=lon, y=lat,colour = grp),size = 4) + 
    scale_colour_manual(values = c('red','blue')) 

enter image description here

+0

謝謝!這個解決方案真的做我所問的。不過,我真的很感謝沒有結合數據框的解決方案。由於ggplot2允許不同圖層的重疊,因此可能會手動更改兩個圖例的標籤。 –

+1

@DaviMoreira這不是ggplot的工作方式。一般來說,一層:一個傳說。結合數據幀_is_你是如何在ggplot中完成的。 – joran

+0

你是對的。但我想到的是沿着哈德利繪製的着名Minard地圖[鏈接] http://www.stat.columbia.edu/~gelman/bayescomputation/Wickham2010.pdf)的方式。有兩個數據框架(部隊和城市),它​​們不合並,因爲它們以不同的方式組織(至少我猜這就是原因)。而且我碰巧在我的數據集中可能有這個問題,因爲有關餐館的數據的組織方式與供應商的數據不同。重新排列這兩個數據集以組合它們可能是可能的,但我覺得這很難做到。 –