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

作者: locka (locka)   2016-01-08 19:30:03
各位好:
手上有一些經緯度的資料,參考以下這篇,想要如法炮製把點繪製在地圖上
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

Links booklink

Contact Us: admin [ a t ] ucptt.com