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

标签 r filter filtering integrate

我有一个类似的情节

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/

相关文章:

r - 无法从shinyapps.io连接到Microsoft Azure

r - 将 "true"/"false"值的数据帧列转换为 1 或 0 并分配给数据帧

java - 我需要在 weka 中制作一个支持 vector 机来使用 Java 过滤文档

javascript - 对 html 表的列启用部分匹配搜索

opencv - 查找图像中指向一个方向的所有线

r - 查询组的特定行以创建新列

r - 计算多个变量的因子水平出现次数并将结果汇​​总到一张表中

c++ - OpenCV 中的像素化实现

java - Criteria API - OR 比较器,比较次数未知

node.js - Sequelize - 有什么方法可以进行数据抽象/过滤吗?