如何使用 sf 包根据特征属性绘制半径为圆的圆?

pie*_*ito 1 geography r r-sf

我有这些代表地图上坐标的数据以及每个点的值:

require(tidyverse)

df <- tribble(     ~ x,      ~ y,   ~ N,
               776025., 6990858.,   100,
               744220 , 6940666.,    75,
               774222., 6904024.,    55,
               719368., 6973708.,    30,
               735330., 7029420.,     1)
Run Code Online (Sandbox Code Playgroud)

使用该sf包,我成功地从xy列创建了几何特征:

require(sf)
(geom_column <- st_sfc(pmap(df[, 1:2], function(x, y) st_point(c(x, y)))))
Run Code Online (Sandbox Code Playgroud)

然后将这些几何特征与对象N中的属性特征组合起来sf

(df <- st_sf(df[, 3], geometry = geom_column))
Run Code Online (Sandbox Code Playgroud)

然后我可以绘制这 5 点:

plot(df)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

现在我想使用半径与N属性成比例的圆,而不是默认的色标。但我不知道该怎么做。

I_O*_*_O 5

一种方法(从您的初始开始df,即仍然没有几何列):

    scale_factor = 100 ## adjust as desired

    df |>
      st_as_sf(coords = c('x', 'y')) |>
      mutate(geometry = st_buffer(geometry, scale_factor *  N)) |>
      plot()
Run Code Online (Sandbox Code Playgroud)

另一种方法,让我们ggplot负责缩放:

    library(ggplot2)

    df |>
      st_as_sf(coords = c('x', 'y')) |>
      ggplot(aes(geometry = geometry)) +
          geom_sf(aes(size = N))
Run Code Online (Sandbox Code Playgroud)