【发布时间】:2011-01-05 12:34:08
【问题描述】:
我有一个对象列表(可能不超过 100 个),其中每个对象与所有其他对象都有距离。这个距离仅仅是这些对象共享的所有字段之间增加的绝对差异。可能有几个(一个)或多个(几十个)字段,因此距离的维度并不重要。
我想在 2D 图表中显示这些点,以便距离较近的对象靠得很近。我希望这将清楚地传达整个列表中有多少子组。显然,这个图表的坐标轴是没有意义的(我什至不确定“图表”是否是正确使用的词)。
将距离网络转换为二维点分布的好算法是什么?理想情况下,我希望对距离网络进行小幅更改,以使图形发生小幅变化,从而可以将增量进度视为随时间的平滑变化。
我已经做了一个我正在寻找的结果的小例子: Example Graphic http://en.wiki.mcneel.com/content/upload/images/GraphExample.png
非常感谢任何想法, 大卫
编辑:
它实际上似乎奏效了。我将整组值视为 2D 粒子云,构建所有粒子之间的平方反比斥力和基于反距离的线性吸引力。这不是一个稳定的算法,每当执行额外的迭代时,结果往往会剧烈旋转,但它似乎总是能很好地分离成视觉集群:
alt text http://en.wiki.mcneel.com/content/upload/images/ParticleCloudSolution.png
如果有人感兴趣,我可以发布 C# 代码(可悲的是有很多)
【问题讨论】:
标签: language-agnostic graphics graph visualization