使用geom_polygon绘制地图的地理边界不完整 - ggplot2

时间:2013-07-14 22:04:36

标签: r ggplot2 gis

我有一个包含推文坐标的数据框,例如:

library(ggplot2)

df <- data.frame(long = c(-58.1, -58.2, -58.3, -58.4, -58.5, -55),
                 lat = c(-34.1, -34.2, -34.3, -34.4, -34.5, -25))

我想绘制布宜诺斯艾利斯的大都会区,即AMBA。 它由以下区域定义: 纵向:( - 58,-59) 纬度:( - 34,-35)

我的数据框中有一行在AMBA区域之外。 (对问题(2)很重要)

这是我尝试过的:

加载阿根廷地图信息

con <- url("http://gadm.org/data/rda/ARG_adm2.RData")
print(load(con))
close(con)

ggmap <- fortify(gadm, region = "NAME_2")        

将绘图的限制设置为仅包含AMBA

lim <- data.frame(lon = c(-59, -58), lat = c(-35, -34))

剧情

ggplot(data=ggmap, aes(x=long, y=lat)) +
   scale_x_continuous(limits = c(-59,-58)) + 
   scale_y_continuous(limits = c(-35,-34)) +
   geom_polygon(data = ggmap, fill = "grey80", aes(group=group)) +
   geom_path(color="white",aes(group=group)) +
   geom_point(data = df, aes(x = lon, y = lat, colour = "red"), alpha = 30/100)

问题:

  1. 主要问题是政治边界的区域在外部状态并不完整,因此地图看起来很奇怪。有没有办法解决这个问题?
  2. 我应该对数据框进行子集以便将观察结果保存在AMBA区域内,或者我可以直接进行绘图并直接选择我感兴趣的区域。我相信这就是scale_x_continuous(limits = ...)的作用。

1 个答案:

答案 0 :(得分:7)

尝试使用coord_map代替scale_x_continuous / scale_y_continuous。 设置坐标系的限制将缩放绘图(就像你用放大镜看它一样),并且不会像刻度上的设置限制那样改变基础数据。

ggplot(data=ggmap, aes(x=long, y=lat)) +
    geom_polygon(data=ggmap, fill="grey80", aes(group=group)) +
    geom_path(color="white",aes(group=group)) +
    geom_point(data=df, aes(x=long, y=lat), colour="red", alpha=30/100) +
    coord_map(xlim=-c(59, 58), ylim=-c(35,34))

R Plot