寻找散点图中靠近X和Y轴的点

3

我有一个关于散点图的问题,我正在尝试创建它。我有一个包含以下格式数据的文件:每个名称都是唯一的,公司得分和社区得分都是整数值。

Name    CompanyScore   CommunityScore
Patrick 8383           99000

这个文件以相同的格式继续进行了一段时间。我试图找出散点图中靠近X(公司得分)和Y(社区得分)轴的前二十个点。可能有一些数学方法可以做到这一点,但目前我完全不知所措。理想情况下,我可能需要从文件中在Java中制作散点图,然后找出最接近X和Y轴的值不太难吧?我不确定是否有此类库。我知道有像R这样的统计工具,但我认为在Java中直接查看细节可能更容易。希望这不是一个痴心妄想。如果有人能帮帮我,我将不胜感激!


离X轴和Y轴最近的点是那些其值(CompanyScore和CommunityScore)最接近零的点。 - NickJ
也许您指的是距离原点最近的?那应该是 data[order(sqrt(data$Company^2+data$CommunityScore^2))[1:20],] - nograpes
具有最大综合分数的人是具有最大值的人:Math.sqrt(x*x + y*y);(从原点到该点的距离)。 - rolfl
2个回答

3
如果你正在寻找离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

然后取这些距离中最小的一个。


2
我不知道原帖作者是否想要组合距离而不是两个列表(在我的理解中),但如果是这样的话,需要注意的是,除非它们处于相同的比例尺上,否则这种方法将被具有较大比例尺的变量所主导。我认为假设它们在相同比例尺上并不安全,而且这个示例似乎也表明了不同。如果您对问题的理解正确,您可能需要在计算欧几里得距离之前标准化这两个变量。 - gung - Reinstate Monica
@gung 那是一个很好的观点,谢谢。 - sdasdadas
2
不客气,@sdasdadas。不幸的是,那个规范化公式只适用于简单情况。一个更强大的规范化公式应该是(x - min_x)/(max_x - min_x)。另一方面(现在与自己争论),如果OP希望合并距离,则可能希望它被一个变量所支配;这一点需要澄清... - gung - Reinstate Monica
@gung 再次编辑。 :D - sdasdadas

1
如果我理解正确的话,您想要最低 CompanyScore 值的前20行和最低 CommunityScore 值的前20行。您可以使用 ?order?head 来实现这一点。尝试:
head(myData[order(myData$CompanyScore)],   n=20)
head(myData[order(myData$CommunityScore)], n=20)

我假设所有数值都是正的。如果你想要离0最近的值,但有些数是负数,你可以在order()中使用abs(myData$CompanyScore)。请注意保留HTML标签。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接