gpt4 book ai didi

r - 过滤属于预定义圆值的数据

转载 作者:行者123 更新时间:2023-12-04 11:32:02 24 4
gpt4 key购买 nike

我有一个类似的情节

example plot

我的目标是过滤掉内圈内的所有数据。

我尝试过仅通过绘制圆圈的数据进行过滤的方法,问题是有 X 和 Y 值,并且它们位于笛卡尔 map 的所有 4 个空间中,所以如果一个点在上面可能没问题(按大于某值的值进行过滤),但这会过滤掉仍在内圈之外但位于其下方的值。

我也尝试过使用积分来做事情,但我的数学很生疏。积分应该能够识别曲线下的值。如果曲线绘制内圆,也许我可以过滤掉值。对我来说,是的,这说起来容易做起来难,所以非常感谢您的帮助。

PS:这里的母语不是英语,所以请原谅我。


圆圈的创建者:

radii=c(sqrt(1/2),1)
theta <- seq(0, 2 * pi, length = 500)

#Inner Circle:

xtemp1=radii[1]*cos(theta)
ytemp1=radii[1]*sin(theta)
circ1=as.data.frame(cbind(xtemp1,ytemp1))

#Outer Circle:

xtemp2=radii[2]*cos(theta)
ytemp2=radii[2]*sin(theta)
circ2=as.data.frame(cbind(xtemp2,ytemp2))

这是一小部分数据(名为 temp):

Comp_1,Comp_2
0.253,-0.29
-0.23,0.222
-0.384,0.432
-0.032,0.805
-0.261,0.265
-0.181,0.344
-0.133,-0.436
-0.358,-0.004
-0.139,-0.314
0.303,0.257
-0.131,0.602

对于情节:

#Plot
p1=ggplot(data=temp, aes(x=Comp_1, y=Comp_2)) + geom_point() +
scale_x_continuous(limits=c(-1,1), breaks=seq(-1,1,by=0.1)) +
scale_y_continuous(limits=c(-1,1), breaks=seq(-1,1,by=0.1))
#Circle
p1=p1 + geom_polygon(data=circ1, aes(x=xtemp1, y=ytemp1),size=0.5,inherit.aes = F, colour="black", fill=NA, alpha=0.5) +
geom_polygon(data=circ2, aes(x=xtemp2, y=ytemp2),size=0.5,inherit.aes = F, colour="black", fill=NA, alpha=0.5)

最佳答案

这听起来像是多边形中的点问题 (https://en.wikipedia.org/wiki/Point_in_polygon)。 sp 库中的 point.in.polygon() 函数可能有用。

point.in.polygon(Comp_1,Comp_2,xtemp1,ytemp1)

关于r - 过滤属于预定义圆值的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46471801/

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