我在 SQLite 数据库中保存了大量网络信息。我想根据这些信息以网络图的形式绘制一个图表。
我希望它是交互式的,从某种意义上说,在最高级别上只能看到网络范围通信,当您深入图表时,您开始看到各个节点(交换机、路由器、防火墙、主机、服务器等)全部链接在一起。
我希望这个过程尽可能顺利,允许您使用滚轮在图表的某个位置进行放大,并且图表会随着您的操作而扩展。然后您可以在地图上单击并拖动。不过,我想先了解基础知识,因此认为我应该从在 HTML 中绘制图表开始,并为节点提供超链接,允许用户使用浏览器在图表中移动并深入了解图表。
同样重要的是,用户能够将他们的视图捕获为静态图像,我猜这在 HTML 中会更容易完成。
为了达到目的,我想问我可以从哪里开始这样做。我研究过 PyQT、Graphviz、输出到 HTML 等。我只是想决定使用什么以及一般如何去做这件事。我对 Python 相当擅长,但我愿意接受其他语言的建议。
如果你们认为 Python 可以做到这一点,那么哪个 Python 可以做到呢?2.7还是3?我一直在考虑升级到 3,现在合适吗?
提前致谢!
这里重要的是你想要一些动态的东西并且可以被用户捕获。
我的回答将与这个问题非常相似。
将图形导出为标准格式(例如 GEXF),并使用 Javascript 图形绘图库使图形具有交互性,例如:SigmaJs或VivaGraphJs。
最大的优点是您可以编写图形脚本来响应用户事件,例如缩放、另存为图片或动态显示有关节点和边的信息等。
恢复:
首先,您需要一个 Python 图形库,例如Networkx,然后将图形及其属性导出为 JSON 或 GEXF。
使用 javascript 图形库加载图形,并使用示例作为基线。使用 sigma.js 的示例列表,VivaGraphJs 教程。
关于 python 版本,它实际上依赖于您可能使用的其他库。对于科学用途,我不建议切换到 Py3k,但对于其他任何事情,你都可以使用。
| 归档时间: |
|
| 查看次数: |
13412 次 |
| 最近记录: |