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))
}
}
相关用法
- R ggplot2 coord_fixed 具有固定“纵横比”的笛卡尔坐标
- R ggplot2 coord_polar 极坐标
- R ggplot2 coord_cartesian 笛卡尔坐标
- R ggplot2 coord_trans 变换后的笛卡尔坐标系
- R ggplot2 coord_flip x 和 y 翻转的笛卡尔坐标
- R ggplot2 cut_interval 将数值数据离散化为分类数据
- R ggplot2 annotation_logticks 注释:记录刻度线
- R ggplot2 vars 引用分面变量
- R ggplot2 position_stack 将重叠的对象堆叠在一起
- R ggplot2 geom_qq 分位数-分位数图
- R ggplot2 geom_spoke 由位置、方向和距离参数化的线段
- R ggplot2 geom_quantile 分位数回归
- R ggplot2 geom_text 文本
- R ggplot2 get_alt_text 从绘图中提取替代文本
- R ggplot2 annotation_custom 注释:自定义grob
- R ggplot2 geom_ribbon 函数区和面积图
- R ggplot2 stat_ellipse 计算法行数据椭圆
- R ggplot2 resolution 计算数值向量的“分辨率”
- R ggplot2 geom_boxplot 盒须图(Tukey 风格)
- R ggplot2 lims 设置规模限制
- R ggplot2 geom_hex 二维箱计数的六边形热图
- R ggplot2 scale_gradient 渐变色阶
- R ggplot2 scale_shape 形状比例,又称字形
- R ggplot2 geom_bar 条形图
- R ggplot2 draw_key 图例的关键字形
注:本文由纯净天空筛选整理自Hadley Wickham等大神的英文原创作品 Map projections。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。