gpt4 book ai didi

r - 在 r 中的形状内创建随机点

转载 作者:行者123 更新时间:2023-12-04 13:07:24 25 4
gpt4 key购买 nike

我正在尝试为一个项目模拟一些数据,基本上我需要绘制一个不规则的椭圆形形状,然后在该形状内制作一堆随机点,我完全不知道如何做到这一点。
现在,我已经制作了一个样条形状,然后在它上面绘制了一堆点。有没有办法找到重叠?或者更好,只是在预制形状的边界内生成随机点?
(如果有更好的开始方式,请随意放弃我的代码 - 也许它需要某种空间对象?)

set.seed(2)
shape <- data.frame(
x = c(2, 3, 2, 3, 2, 1, 0, 1),
y = c(1, 3, 5, 7, 9, 7, 5, 3 )
)

scatter = data.frame(
x = rnorm(100, mean = 1.5, sd = .6),
y = rnorm(100, mean = 5, sd = 2)
)


ggplot(data = shape,
aes(x=x,y=y)) +
ggforce::geom_bspline_closed(fill = "transparent", color = "black") +
geom_point(color = "blue") +
coord_equal() +
geom_point(data = scatter, shape = "*", size=3)
enter image description here

最佳答案

我会推荐 sf包,因为它是为空间数据和执行空间操作而制作的。这是在多边形内生成随机点的一个小例子:

library(ggplot2)

polygon =
# The syntax for creating a polygon with sf is a little strange.
# It has to be a list of matrices and the first point has to be
# repeated as the last point (2, 1).
list(
matrix(
c(2, 1, 3, 3, 2, 5, 3, 7, 2, 9, 1, 7, 0, 5, 1, 3, 2, 1),
ncol=2, byrow=T
)
)

# Create an sf polygon
polygon = sf::st_polygon(polygon)
# Sample 50 random points within the polygon
points = sf::st_sample(polygon, size=50)

# Plot using the ggplot geom_sf function.
ggplot() +
geom_sf(aes(), data=polygon) +
geom_sf(aes(), data=points)
enter image description here
如果您需要点的坐标,您可以简单地将 sf 点对象转换为 data.framepoints %>% sf::st_coordinates() %>% as.data.frame() .

关于r - 在 r 中的形状内创建随机点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68761166/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com