stat_sf_coordinates()
从 'sf' 对象中提取坐标,并将它们汇总为每个几何体的一对坐标(x 和 y)。当您将 sf 对象绘制为文本和标签等几何图形时,这很方便(因此 geom_sf_text()
和 geom_sf_label()
依赖于此)。
用法
stat_sf_coordinates(
mapping = aes(),
data = NULL,
geom = "point",
position = "identity",
na.rm = FALSE,
show.legend = NA,
inherit.aes = TRUE,
fun.geometry = NULL,
...
)
参数
- mapping
-
由
aes()
创建的一组美学映射。如果指定且inherit.aes = TRUE
(默认),它将与绘图顶层的默认映射组合。如果没有绘图映射,则必须提供mapping
。 - data
-
该层要显示的数据。有以下三种选择:
如果默认为
NULL
,则数据继承自ggplot()
调用中指定的绘图数据。data.frame
或其他对象将覆盖绘图数据。所有对象都将被强化以生成 DataFrame 。请参阅fortify()
将为其创建变量。将使用单个参数(绘图数据)调用
function
。返回值必须是data.frame
,并将用作图层数据。可以从formula
创建function
(例如~ head(.x, 10)
)。 - geom
-
用于显示数据的几何对象,可以作为
ggproto
Geom
子类,也可以作为命名去除geom_
前缀的几何对象的字符串(例如"point"
而不是"geom_point"
) - position
-
位置调整,可以是命名调整的字符串(例如
"jitter"
使用position_jitter
),也可以是调用位置调整函数的结果。如果需要更改调整设置,请使用后者。 - na.rm
-
如果
FALSE
,则默认缺失值将被删除并带有警告。如果TRUE
,缺失值将被静默删除。 - show.legend
-
合乎逻辑的。该层是否应该包含在图例中?
NA
(默认值)包括是否映射了任何美学。FALSE
从不包含,而TRUE
始终包含。它也可以是一个命名的逻辑向量,以精细地选择要显示的美学。 - inherit.aes
-
如果
FALSE
,则覆盖默认美学,而不是与它们组合。这对于定义数据和美观的辅助函数最有用,并且不应继承默认绘图规范的行为,例如borders()
。 - fun.geometry
-
该函数接受
sfc
对象并返回与输入长度相同的sfc_POINT
。如果NULL
,将使用function(x) sf::st_point_on_surface(sf::st_zm(x))
。请注意,如果未投影数据,该函数可能会警告结果不正确,但您可以忽略此错误,除非您真正关心确切位置。 - ...
-
其他参数传递给
layer()
。这些通常是美学,用于将美学设置为固定值,例如colour = "red"
或size = 3
。它们也可能是配对的 geom/stat 的参数。
细节
sf
对象的坐标可以通过 sf::st_coordinates()
检索。但是,我们不能简单地使用 sf::st_coordinates()
,因为虽然文本和标签只需要每个几何图形一个坐标,但它会为多边形或直线返回多个坐标。因此,需要执行以下两个步骤:
-
通过
sf::st_centroid()
或sf::st_point_on_surface()
等函数为每个几何体选择一个点。 -
通过
sf::st_coordinates()
从点检索坐标。
第一步,您可以通过 fun.geometry
使用任意函数。默认使用function(x) sf::st_point_on_surface(sf::st_zm(x))
; sf::st_point_on_surface()
似乎比 sf::st_centroid()
更合适,因为标签和文本通常旨在放置在多边形或线条内。 sf::st_zm()
需要事先删除Z和M维度,否则当几何体具有M维度时sf::st_point_on_surface()
可能会失败。
计算变量
这些是由层的 'stat' 部分计算的,可以使用 delayed evaluation 访问。
-
after_stat(x)
简单特征的 X 尺寸。 -
after_stat(y)
简单特征的 Y 维度。
例子
if (requireNamespace("sf", quietly = TRUE)) {
nc <- sf::st_read(system.file("shape/nc.shp", package="sf"))
ggplot(nc) +
stat_sf_coordinates()
ggplot(nc) +
geom_errorbarh(
aes(geometry = geometry,
xmin = after_stat(x) - 0.1,
xmax = after_stat(x) + 0.1,
y = after_stat(y),
height = 0.04),
stat = "sf_coordinates"
)
}
#> Reading layer `nc' from data source
#> `/home/runner/work/_temp/Library/sf/shape/nc.shp' using driver `ESRI Shapefile'
#> Simple feature collection with 100 features and 14 fields
#> Geometry type: MULTIPOLYGON
#> Dimension: XY
#> Bounding box: xmin: -84.32385 ymin: 33.88199 xmax: -75.45698 ymax: 36.58965
#> Geodetic CRS: NAD27
#> Warning: st_point_on_surface may not give correct results for longitude/latitude data
相关用法
- R ggplot2 stat_summary_2d 以二维形式进行分类和汇总(矩形和六边形)
- R ggplot2 stat_summary 总结唯一/分箱 x 处的 y 值
- R ggplot2 stat_ellipse 计算法行数据椭圆
- R ggplot2 stat_identity 保留数据原样
- R ggplot2 stat_unique 删除重复项
- R ggplot2 stat_ecdf 计算经验累积分布
- R ggplot2 scale_gradient 渐变色阶
- R ggplot2 scale_shape 形状比例,又称字形
- R ggplot2 scale_viridis 来自 viridisLite 的 Viridis 色标
- R ggplot2 scale_grey 连续灰度色阶
- R ggplot2 scale_linetype 线条图案的比例
- R ggplot2 scale_discrete 离散数据的位置尺度
- R ggplot2 scale_manual 创建您自己的离散尺度
- R ggplot2 scale_colour_discrete 离散色阶
- R ggplot2 scale_steps 分级渐变色标
- R ggplot2 should_stop 在示例中用于说明何时应该发生错误。
- R ggplot2 scale_size 面积或半径比例
- R ggplot2 scale_date 日期/时间数据的位置刻度
- R ggplot2 scale_continuous 连续数据的位置比例(x 和 y)
- R ggplot2 scale_binned 用于对连续数据进行装箱的位置比例(x 和 y)
- R ggplot2 sec_axis 指定辅助轴
- R ggplot2 scale_alpha Alpha 透明度比例
- R ggplot2 scale_colour_continuous 连续色标和分级色标
- R ggplot2 scale_identity 使用不缩放的值
- R ggplot2 scale_linewidth 线宽比例
注:本文由纯净天空筛选整理自Hadley Wickham等大神的英文原创作品 Extract coordinates from 'sf' objects。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。