5

我知道 R 有多种方法可以通过投影正确绘制地图。但只是为了使用基本函数快速获得“足够好”的结果,是否有一个函数可以计算特定纬度的纵横比,如果提供给 R 的典型asp参数将接近正确的图?即相当于ggplot2 的coord_quickmap方法的东西。感谢任何建议。

4

1 回答 1

7

如果coord_quickmap提供的东西对您来说足够接近,那么您可以执行以下操作:

library(ggplot2)
library(maps)
library(mapdata)

# shamelessly stolen from coord_quickmap

map_aspect = function(x, y) {
  x.center <- sum(range(x)) / 2
  y.center <- sum(range(y)) / 2
  x.dist <- ggplot2:::dist_central_angle(x.center + c(-0.5, 0.5), rep(y.center, 2))
  y.dist <- ggplot2:::dist_central_angle(rep(x.center, 2), y.center + c(-0.5, 0.5))
  y.dist / x.dist
}

会做什么ggplot

ggplot(data.frame(state.center)) + geom_point(aes(x=x, y=y)) + coord_quickmap()

在此处输入图像描述

同样的事情,现在,在基地:

plot(state.center$x, state.center$y,
     asp=map_aspect(state.center$x, state.center$y))

在此处输入图像描述

但请记住,这coord_quickmap(以及由此计算的比率)是为区域设计的。我在这里发布了一些能够选择地图投影的资源:here which will work great with spTransform& base)。

于 2015-07-31T12:45:03.770 回答