使用Python或其他东西制作交互式网络拓扑图?

时间:2015-07-29 08:54:15

标签: python graph

我在SQLite数据库中保存了大量的网络信息。我想以网络图的样式绘制基于此信息的图表。

我希望它是交互式的,从某种意义上说,在最高层次上只能看到网络范围的通信,当你深入到图表中时,你会开始看到各个节点(交换机,路由器,防火墙,主机,服务器)等等都联系在一起。

我希望这个过程尽可能顺畅,让您可以使用图表位置的滚轮进行放大,并在此过程中进行扩展。然后允许您单击并拖动地图。但是我想首先了解基础知识,所以我认为我应该首先在HTML中绘制图表,并为节点提供超链接,允许用户使用浏览器在图表中移动并更深入。

用户能够将他们的视图捕获为静止图像也是至关重要的,我猜这将更容易用HTML完成。

为了达到这个目的,我问我可能会在哪里开始这样做。我已经看过PyQT,Graphviz,输出到HTML等等。我只是想确定要使用什么以及一般如何去做。我对Python相当不错,但我对其他语言的建议持开放态度。

如果你们认为Python可以做到这一点,哪个Python? 2.7还是3?我一直在考虑暂时搬到3,是时候了吗?

提前致谢!

3 个答案:

答案 0 :(得分:2)

这里重要的是你想要一些动态的东西,并且可以被用户捕获。

我的回答与此question非常相似。

将图表导出为标准格式,例如GEXF,并使用Javascript图形绘制库使图表具有交互性,例如:SigmaJsVivaGraphJs

最大的好处是您可以编写图表脚本以响应用户事件,例如缩放,另存为图片或动态显示有关节点和边缘的信息等。

要恢复:

关于python版本,它实际上依赖于您可能使用的其他库。对于科学用途,我不建议切换到Py3k,但除此之外你还有其他任何好处。

答案 1 :(得分:2)

我过去曾经遇到类似你问题的事情。我们在MySQL数据库中记录了大量的路由器。我们实际使用Racktables,该工具以这种方式存储所有信息。

有一次我们需要绘制网络拓扑图。如果您愿意,请看一下:

https://notedisabbia.wordpress.com/2016/06/17/first-blog-post/

https://github.com/RackTables/racktables-contribs/tree/master/python-graph-topology

第一个链接是我写的博客,用于解释我的python程序(第二个链接)在连接到Racktables,收集信息和绘制网络图方面的作用。

希望这有帮助。

干杯,

卢卡斯

答案 2 :(得分:0)

我建议您查看库d3graph。它不允许您使用滚轮进行缩放,但是具有其他功能,例如折边。 可在此处找到更多信息:Django and interactive graph/network visualization