【问题标题】:Finding points that sit near the X and Y axes in a scatter plot [closed]在散点图中查找位于 X 和 Y 轴附近的点 [关闭]
【发布时间】:2013-12-03 05:38:51
【问题描述】:

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

Name    CompanyScore   CommunityScore
Patrick 8383           99000

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

【问题讨论】:

  • 最接近 X 轴和 Y 轴的点是其值(CompanyScore 和 CommunityScore)最接近于零的点。
  • 也许你的意思是最接近原点?那将是data[order(sqrt(data$Company^2+data$CommunityScore^2))[1:20],]
  • 综合得分最大的人是最大的人:Math.sqrt(x*x + y*y);(从原点到点的距离)。

标签: java r plot statistics


【解决方案1】:

如果您正在寻找最接近 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

然后取最小的距离。

【讨论】:

  • 我不知道 OP 是否想要组合距离,而不是 2 个列表(在我的解释中),但如果是这样,请注意此解决方案将由具有较大比例的变量控制,除非它们在同一尺度上。我认为假设它们是不安全的,并且该示例似乎也暗示了其他情况。如果您对问题的解释是正确的,您可能希望在计算欧几里得距离之前对这两个变量进行标准化
  • @gung 说得很好,谢谢。
  • 不客气,@sdasdadas。不幸的是,该规范化公式仅适用于简单的情况。一个更强大的规范化公式是(x - min_x)/(max_x - min_x)。另一方面,(现在和我自己争论)如果 OP 想要组合距离,他们可能希望它由一个变量控制;这点需要澄清一下……
  • @gung 再次编辑。 :D
【解决方案2】:

如果我的理解正确,您需要 CompanyScore 值最低的 20 行和 CommunityScore 值最低的 20 行。您可以使用?order?head 来执行此操作。试试:

head(myData[order(myData$CompanyScore)],   n=20)
head(myData[order(myData$CommunityScore)], n=20)

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

【讨论】:

    猜你喜欢
    • 2019-07-07
    • 1970-01-01
    • 2013-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-11
    相关资源
    最近更新 更多