小编yo1*_*122的帖子

如何用python绘制可读的,最好是交互式的网络图?

我正在尝试绘制运行脚本的任何网络的图形。我使用scapy收集数据包,并希望每台计算机通信有一个节点,每个连接有一个边缘。

问题是我找不到在屏幕上足够形象地显示图形的方法。到目前为止,将networkx与matlib.pyplot结合使用可带来最佳结果,但看起来仍然相当随机且混乱,标签难以读取,节点相互重叠,等等。最好还具有与图进行交互的能力-移动节点,将鼠标悬停在节点/边上以获得更多信息,放大或什至将节点群集在一起,以便在单击群集时可以看到由哪些节点组成集群。

由于分析网络数据并向图中添加节点和边将很麻烦,因此我在这里仅添加相关部分(实际上显示了我构建的图的部分):

pos = nx.spring_layout(Graph, scale=2)
edge_labels = nx.get_edge_attributes(Graph, "Protocol")
nx.draw(Graph,pos, with_labels=True, node_size=600, font_size=8, font_weight='bold')
nx.draw_networkx_edge_labels(Graph, pos, edge_labels=edge_labels, font_size=8)
plt.show()
Run Code Online (Sandbox Code Playgroud)

(我将网络导入为nx,将matplotlib.pyplot导入为plt)

我还尝试了graphviz,plotty和bokeh,但无法真正使它们正常工作,在对Google进行故障排除后,我觉得无论如何他们都无法解决我的问题,我还尝试了AdjustText-但我无法设法使其适应我的需求代码以任何方式(找不到如何获取图形的text属性)和Holoviews-但是无论我尝试什么(即使我从其站点复制并粘贴示例),它都拒绝显示图像-任一python都表示'%opts ...'是无效的语法,或者如果我尝试以其他方式更改选项,则代码将一直运行直到结束并且在屏幕上不显示任何内容。

该图如下所示: 这是图的样子

我在网上找到了很多局部解决方案,所以它们都不起作用,有人有全面的解决方案吗?

python visualization data-visualization networkx holoviews

7
推荐指数
1
解决办法
2614
查看次数