我有这些代表地图上坐标的数据以及每个点的值:
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包,我成功地从x和y列创建了几何特征:
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)