【问题标题】:Making an interactive network topology diagram using Python or something else?使用 Python 或其他工具制作交互式网络拓扑图?
【发布时间】:2015-07-29 08:54:15
【问题描述】:

我在 SQLite 数据库中保存了大量的网络信息。我想根据这些信息以网络图的形式绘制图表。

我希望它是交互式的,从某种意义上说,在最高级别只能看到网络范围通信,并且随着您深入到图表中,您开始看到各个节点(交换机、路由器、防火墙、主机、服务器等)都链接在一起。

我希望此过程尽可能顺利,允许您在图表的某个位置使用滚轮进行放大,并在您这样做时展开。然后允许您在地图上单击并拖动。不过,我想先了解基础知识,因此认为我应该从用 HTML 绘制图表开始,并为节点提供超链接,允许用户使用浏览器在图表中四处移动并深入了解。

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

为了达到这一点,我要问我可能从哪里开始这样做。我查看了 PyQT、Graphviz、输出到 HTML 等。我只是想决定使用什么以及通常如何去做。我对 Python 相当熟悉,但我愿意接受其他语言的建议。

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

提前致谢!

【问题讨论】:

    标签: python graph


    【解决方案1】:

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

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

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

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

    继续:

    关于 python 版本,它确实依赖于您可能使用的其他库。出于科学用途,我不建议切换到 Py3k,但其他任何事情你都可以使用。

    【讨论】:

    • 我最终选择了 d3.js,只使用 Python 创建所需的 JSON 文件。
    【解决方案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、收集信息和绘制网络图方面做了什么。

    希望这会有所帮助。

    干杯,

    卢卡斯

    【讨论】:

      【解决方案3】:

      我建议查看library d3graph。它不允许您使用滚轮进行缩放,但确实具有其他功能,例如断边。 更多信息可以在这个blog找到。

      【讨论】:

        猜你喜欢
        • 2017-10-10
        • 2022-07-05
        • 2012-03-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-10-14
        • 2011-03-31
        • 2011-05-08
        相关资源
        最近更新 更多