当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


R ggplot2 coord_map Map投影


[Superseded]

coord_map() 使用 mapproj 包定义的任何投影将地球的一部分(近似球形)投影到平坦的 2D 平面上。一般来说,Map投影不会保留直线,因此这需要大量的计算。 coord_quickmap() 是一种快速近似,可以保留直线。它最适合靠近赤道的较小区域。

coord_map()coord_quickmap() 均被 coord_sf() 取代,并且不应再在新代码中使用。通过 default_crs 参数设置默认坐标系,所有常规(非 sf)几何图形都可以与 coord_sf() 一起使用。另请参阅 annotation_map()geom_map() 的示例。

用法

coord_map(
  projection = "mercator",
  ...,
  parameters = NULL,
  orientation = NULL,
  xlim = NULL,
  ylim = NULL,
  clip = "on"
)

coord_quickmap(xlim = NULL, ylim = NULL, expand = TRUE, clip = "on")

参数

projection

要使用的投影,请参阅mapproj::mapproject() 列表

..., parameters

其他参数传递给 mapproj::mapproject() 。使用 ... 作为投影的命名参数,使用 parameters 作为未命名参数。如果存在 parameters 参数,则忽略 ...

orientation

投影方向,默认为 c(90, 0, mean(range(x))) 。这对于许多投影来说并不是最佳的,因此您必须提供自己的投影。有关详细信息,请参阅mapproj::mapproject()

xlim, ylim

手动指定 x/y 限制(以经度/纬度为单位)

clip

是否应该将绘图裁剪到绘图面板的范围内?设置"on"(默认)表示是,设置"off"表示否。详情请参见coord_cartesian()

expand

如果 TRUE (默认值)会在限制中添加一个小的扩展因子,以确保数据和轴不重叠。如果 FALSE ,则完全从数据或 xlim /ylim 中获取限制。

细节

Map投影必须考虑到赤道和极点之间经度的实际长度(以公里为单位)不同这一事实。在赤道附近,1 度纬度与 1 度经度的长度之比约为 1。在极地附近,由于 1 度经度的长度趋于 0,因此趋于无穷大。对于跨度只有几米的地区,度并且不太靠近极点,将绘图的纵横比设置为适当的纬度/经度比近似于通常的墨卡托投影。这就是 coord_quickmap() 所做的,并且速度更快(特别是对于像 geom_tile() 这样的复杂绘图),但代价是正确性。

例子

if (require("maps")) {
nz <- map_data("nz")
# Prepare a map of NZ
nzmap <- ggplot(nz, aes(x = long, y = lat, group = group)) +
  geom_polygon(fill = "white", colour = "black")

# Plot it in cartesian coordinates
nzmap
}


if (require("maps")) {
# With correct mercator projection
nzmap + coord_map()
}


if (require("maps")) {
# With the aspect ratio approximation
nzmap + coord_quickmap()
}


if (require("maps")) {
# Other projections
nzmap + coord_map("azequalarea", orientation = c(-36.92, 174.6, 0))
}


if (require("maps")) {
states <- map_data("state")
usamap <- ggplot(states, aes(long, lat, group = group)) +
  geom_polygon(fill = "white", colour = "black")

# Use cartesian coordinates
usamap
}


if (require("maps")) {
# With mercator projection
usamap + coord_map()
}


if (require("maps")) {
# See ?mapproject for coordinate systems and their parameters
usamap + coord_map("gilbert")
}


if (require("maps")) {
# For most projections, you'll need to set the orientation yourself
# as the automatic selection done by mapproject is not available to
# ggplot
usamap + coord_map("orthographic")
}


if (require("maps")) {
usamap + coord_map("conic", lat0 = 30)
}


if (require("maps")) {
usamap + coord_map("bonne", lat0 = 50)
}


if (FALSE) {
if (require("maps")) {
# World map, using geom_path instead of geom_polygon
world <- map_data("world")
worldmap <- ggplot(world, aes(x = long, y = lat, group = group)) +
  geom_path() +
  scale_y_continuous(breaks = (-2:2) * 30) +
  scale_x_continuous(breaks = (-4:4) * 45)

# Orthographic projection with default orientation (looking down at North pole)
worldmap + coord_map("ortho")
}

if (require("maps")) {
# Looking up up at South Pole
worldmap + coord_map("ortho", orientation = c(-90, 0, 0))
}

if (require("maps")) {
# Centered on New York (currently has issues with closing polygons)
worldmap + coord_map("ortho", orientation = c(41, -74, 0))
}
}

相关用法


注:本文由纯净天空筛选整理自Hadley Wickham等大神的英文原创作品 Map projections。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。