2010-07-14 36 views
1

早些时候,我发布了关于可视化和聚类的问题。我想我的问题还不够清楚,所以我再次发布。我希望这次我能做出更好的解释。我也为我的旧问题“不接受答案”而道歉。我不知道我能做到这一点,直到有人指出。我一定会从现在开始做。可视化和聚类

好的。回到问题。以前我写过一个python脚本来计算文档之间的相似性。现在,我把所有的数据写入到记事本,它看起来像这样:

(1, 6821): inf 

(1, 8): 3.458911570 

(1, 9): 7.448105193 

(1, 10): inf 

(1, 11): inf 

(6821, 8): inf 

(6821, 9): inf 

(6821, 10): inf 

(6821, 11): inf 

(8, 9): 2.153308936 

(8, 10): inf 

(8, 11): 16.227647992 

(9, 10): inf 

(9, 11): 34.943139430 

(10, 11): inf 

括号中的数字代表文件编号。而后面的值是两个文件之间的距离。我想要的其实是可视化工具或方法,我可以创建代表每个文档编号的节点。例如在这里,我有6个不同的文件。所以我希望创建6个不同的节点来代表我的文档编号。然后,我想要有根据它们的距离连接这些节点的边缘。例如,文档1和8之间的距离是3.46,而文档1和9之间的距离是7.45。所以,1 & 8需要更接近于1 & 9.虽然具有'inf'距离的文档对不应该有任何连接或边缘将它们连接在一起。

这听起来很简单,但我真的很难找到一个开源可视化工具,可以有效地帮助我执行此操作。我很欣赏任何建议。

+2

嗨,@Jacky。你不应该转发问题,因为原文不清楚 - 一般来说,最好修改原始问题(http://stackoverflow.com/questions/3240658/visualize-data-and-clustering) – 2010-07-14 20:50:03

回答

1

http://www.graphviz.org/

尤其是neato包:

$ cat similar.dot 
graph g { 
    n1 -- n8 [ weight = 3.458911570 ]; 
    n1 -- n9 [ weight = 7.448105193 ]; 
    n8 -- n9 [ weight = 2.153308936 ]; 
    n8 -- n11 [ weight = 16.227647992 ]; 
    n9 -- n11 [ weight = 34.943139430 ]; 
    n10; 
    n6821; 
} 
$ neato -Tpng similar.dot -o similar.png 

http://img534.imageshack.us/img534/4189/similar.png

+0

谢谢!这几乎就是我想要的布局。我已经尝试过了,它完美无缺。 – Jacky 2010-07-15 17:11:20

2

你试过GraphViz?我用它来处理这种情况。我没有尝试改变节点连接的长度,你必须弄清楚这一点。请以list of example graphs为出发点。

0

处理对于数据可视化(以及基于Java的语言)来说是一个非常可爱的工具。可以把它看作是在Java中编写简化的OpenGL(如果需要,你甚至可以使用OpenGL),并且可以自由使用所有的Java库。您甚至可以将您的Processing应用程序嵌入到另一个Swing或AWT应用程序中。

这是main page和全新的wiki

你说你使用了Pyton。有一个黑客,所以你可以在this blog post中使用Jython而不是Java。我没有尝试过,但也许它工作正常。使用另一种语言的唯一缺点(也有一个JavaScript'port',Processing.js)是所有的例子都是针对Processing语言的(基于Java)。