Java 在散点图中查找位于X轴和Y轴附近的点

Java 在散点图中查找位于X轴和Y轴附近的点,java,r,plot,statistics,Java,R,Plot,Statistics,我有一个特别的问题,涉及我试图创建的散点图。我有一个包含以下格式数据的文件:每个名称都是唯一的,CompanyScore和CommunityScore是整数值 Name CompanyScore CommunityScore Patrick 8383 99000 文件以相同的格式保存了相当长的一段时间。我试图在X轴(CompanyScore)和Y轴(CommunityScore)附近的散点图上找出前20个点。也许有一些数学方法可以做到这一点,但目前我完全不知所措。

我有一个特别的问题,涉及我试图创建的散点图。我有一个包含以下格式数据的文件:每个名称都是唯一的,CompanyScore和CommunityScore是整数值

Name    CompanyScore   CommunityScore
Patrick 8383           99000

文件以相同的格式保存了相当长的一段时间。我试图在X轴(CompanyScore)和Y轴(CommunityScore)附近的散点图上找出前20个点。也许有一些数学方法可以做到这一点,但目前我完全不知所措。理想情况下,我可能需要从文件中用Java绘制散点图,然后计算出与X轴和Y轴最接近的值应该不会太难,对吗?我不确定是否有这样的图书馆。我知道有像R这样的统计工具,但我认为用Java查看细节可能更容易。希望这不是一个漫长的过程。如果有人能帮助我,我将不胜感激

如果您要查找最接近X或最接近Y的点,那么只需选择X或Y分数最低的点即可


如果要查找最接近X和最接近Y的点,请计算从该点到零的距离:

distances = sqrt(i * ((x - min_x) / (max_x - min_x))^2 + 
                 j * ((y - min_y) / (max_y - min_y))^2 )

where i + j = 1.0, and 0.0 <= i, j <= 1.0 with i and j being the weight
constants if you want to emphasize one axis over the other
distance=sqrt(i*((x-min\ux)/(max\ux-min\ux))^2+
j*((y-最小值)/(最大值-最小值))^2)

其中i+j=1.0和0.0如果我理解正确,您需要20行具有最低
CompanyScore
值,以及20行具有最低
CommunityScore
值。你可以用和来做这件事。尝试:


我假设所有的值都是正的。如果您想要最接近0的值,有些是负数,可以使用
abs(myData$CompanyScore)
,例如,在
order()
调用中。

最靠近X轴和Y轴的点是那些值(CompanyScore和CommunityScore)最接近零的点。也许您的意思是最接近原点?这将是
data[order(sqrt(data$Company^2+data$CommunityScore^2))[1:20],]
。综合得分最高的人是数学.sqrt(x*x+y*y)得分最高的人(从原点到点的距离)。我不知道OP是否需要组合距离,而不是2个列表(在我的解释中),但如果是这样,请注意此解决方案将由比例较大的变量控制,除非它们在相同的比例上。我认为假设他们是这样是不安全的&这个例子似乎也暗示了另一种情况。如果你对这个问题的解释是正确的,那么在计算欧几里德距离之前,你可能需要对这两个变量进行规范化。@gung这是一个很好的观点,谢谢。不客气,@sdadas。不幸的是,规范化公式只适用于简单的情况。更可靠的规范化公式是
(x-min\ux)/(max\ux-min\ux)
。另一方面,(现在和我争论)如果OP想要组合距离,他们可能希望它由一个变量控制;这一点需要澄清…@gung再次编辑:D
head(myData[order(myData$CompanyScore)],   n=20)
head(myData[order(myData$CommunityScore)], n=20)