[問題] 用ggplot2在地圖上畫點

看板R_Language作者 (locka)時間9年前 (2016/01/08 19:30), 9年前編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
各位好: 手上有一些經緯度的資料,參考以下這篇,想要如法炮製把點繪製在地圖上 http://goo.gl/jMxvkr 畫出來的圖大概長這樣: http://i.imgur.com/dnnWmth.jpg
想知道有沒有方法讓每張圖只聚焦在該行政區, 而不是都是用同一張底部的圖層,導致點都集中在一起呢? 附上我的範例資料集: https://db.tt/sKFmtWq0 程式碼: library(ggmap) library(mapproj) data <- read.csv("ntp.gis.csv",fileEncoding="UTF-8",header=TRUE) map <- get_map(location="Taipei", zoom=11, language="zh-TW",color="bw") ggmap(map) + geom_point(aes(x=zip_x,y=zip_y), color="red", data = data) + facet_wrap(~district) 有試過 facet_wrap(~district, scale="free"),不過會得到錯誤訊息: Error in facet_render.wrap(plot$facet, panel, plot$coordinates, theme, : ggplot2 does not currently support free scales with a non-cartesian coord or coord_flip. 另外還有第二個問題就是, 是不是一旦get_map() 指定了地點跟zoom的大小,似乎就不能變動了? 像如果想針對板橋的地圖放大,我得先自己在google map上取大概的中心點座標 再丟到get_map()裡面: map <- get_map(location = c(lon = 121.453220, lat = 25.006734), zoom = 14, language = "zh-TW", color = "bw") ggmap()... 這樣對我來說有點太大,但是zoom調成15又會有許多點被忽略... 請問get_map()有辦法根據資料的散佈自動取最適合的zoom-in尺度嗎? 或是其他建議的做法? 最後第三個問題想請教的是(抱歉問題有點多QQ) 請問ggmap上面經緯度的精確度有辦法提高嗎? 以上面第二個例子來說,做出來的圖很明顯都集中在某些點, 就算使用position_jitter()效果仍然有限 (1萬多筆資料卻只有30多個點) 可是原始資料的經緯度有到小數點後10幾位,所以覺得有點納悶 http://i.imgur.com/GO1T5fP.jpg
網頁版範例程式碼在這: http://ideone.com/D6FtYK 想請教看看大家的想法,謝謝大家!! [關鍵字]: gis, ggplot2, google map -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.112.25.100 ※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1452252608.A.9DD.html ※ 編輯: locka (140.112.25.100), 01/08/2016 19:41:06 來自問自答(然後再自問)一下: 使用cowplot套件, 可以各自畫好不同地方的ggmap然後再一起呈現出來 library(cowplot) plot_grid( ggmap1, ggmap2, ggmap3, labels=c("板橋區","中和區","三重區", nrow=1, ncol=3) 效果大概是這樣: http://i.imgur.com/JWLufOg.png
第二個問題用source改用osm的話, 就不需要自己找中心點了 不過看樣子zoom-in的參數值仍是要自己決定 然後有關第三個問題, 想請教大家在R中要怎麼知道現在數值的精確度? 我發現從R上看的數值跟我把data輸出到csv上不一樣 (R中看到是小數點後四位, 輸出的csv大概有到小數點後10位) 那我要怎麼知道電腦實際上在運算畫圖時是用哪個呢? http://i.imgur.com/OeiEkWf.png
先謝謝大家了>"< ※ 編輯: locka (140.112.25.100), 01/11/2016 18:39:41
文章代碼(AID): #1MZvt0dT (R_Language)
文章代碼(AID): #1MZvt0dT (R_Language)