[問題] 用ggplot2在地圖上畫點
各位好:
手上有一些經緯度的資料,參考以下這篇,想要如法炮製把點繪製在地圖上
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
R_Language 近期熱門文章
PTT數位生活區 即時熱門文章