[问题] 用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