python - 如何使用 networkx 或其他东西为我的数据(复杂网络)制作令人满意的布局

标签 python networkx cytoscape

我想可视化我的数据。 我的数据是这样的:我的数据文件是: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()

输出是: enter image description here

同样的数据,我用cytoscape,结果是: enter image description here

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

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

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

好像cytospace用的是force layout,我在networkx用的是force layout,但是输出完全不一样。

谁能帮帮我?谢谢

最佳答案

如果你可以安装 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()

enter image description here

关于python - 如何使用 networkx 或其他东西为我的数据(复杂网络)制作令人满意的布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16524915/

相关文章:

python - 使用 Python 创建 WPA 消息完整性代码 (MIC)

python - NetworkX - 生成随机连接的二分图

javascript - Cytsocape.js 无法创建目标不存在的边缘

javascript - CYTOSCAPE JS中如何高亮显示两个节点之间的路径

python - Python 中的 3D 绘图 - 向散点图添加图例

python - 带有 lxml treebuilder 的 html5lib 无法正确解析 namespace

python - 绘制海量networkx图: Array too big

jquery - 隐藏的 Cytoscape 图表稍后无法显示

python - 了解变位词检测的线性运行时实现

python - 如何在networkx中手工实现DFS