3

我想可视化我的数据。我的数据是这样的:我的数据文件是:https ://gist.github.com/anonymous/5568836

4556    5092    0.7000 
4556    4785    0.7500 
4556    5397    0.7000 
4556    5139    0.7500 
4556    5937    0.8333 
4556    6220    0.7000 
4556    5139    0.7500 
4556    6220    0.7063 
4559    4563    0.7500 
4559    4770    0.7500 
4559    4837    0.7500 
4559    5640    0.7500 
4559    4563    0.7500 
4559    4770    0.7500 
4559    4837    0.7500 
4559    5640    0.7500 
4561    4607    1.0000 
4561    4600    0.7500 
4561    4562    0.7500 
4561    5090    0.7500 
4561    5197    1.0000 
4561    5182    0.7500 
4561    5937    0.7500 
4561    6143    0.7500 
4561    5632    1.0000 

第一个是源节点,第二个是目标节点,第三个是距离。我已经使用networkx来可视化它,我的代码是:

import matplotlib.pyplot as plt
import networkx as nx
G=nx.Graph()
#G=nx.star_graph(800)
filedata1 = open("1.txt",'r')
for line in filedata1:
    datas = line.split()
    G.add_node(int(datas[0]))
    G.add_node(int(datas[1]))
    G.add_edge(int(datas[0]),int(datas[1]),weight=float(datas[2]))
pos=nx.spring_layout(G)
nx.draw_networkx_nodes(G,pos,node_size=20,node_color='r')
plt.axis('off')
plt.savefig("data.png")
plt.show()

输出是: 在此处输入图像描述

和相同的数据,我使用 cytoscape,结果是: 在此处输入图像描述

cytoscape 似乎自动对数据进行聚类,所以我可以看到一些聚类,在 networkx 中,它完全一团糟。

我想像细胞空间一样输出,但细胞空间输出有链接,无法设置节点之间的距离。

networkx 可以设置节点之间的边缘距离并且只能绘制节点(这是我想要的),但是布局完全混乱,我想展示一些集群:-)

似乎细胞空间使用了力布局,我在networkx中使用了力布局,但输出完全不同。

谁能给我一些帮助?谢谢

4

1 回答 1

2

如果您可以安装 pydot 或 pygraphviz,那么使用 graphviz 布局引擎可能会更好。

例如

import matplotlib.pyplot as plt
import networkx as nx
import urllib
data = urllib.urlopen('https://gist.github.com/anonymous/5568836/raw/abc598d68d8fef980c9701b4bc85f5d10a9f71fa/gistfile1.txt')
G = nx.read_weighted_edgelist(data)
pos=nx.graphviz_layout(G)
nx.draw(G,pos,node_size=20,node_color='r',with_labels=False)
plt.savefig("data.png")
plt.show()

在此处输入图像描述

于 2013-05-14T00:39:40.720 回答