首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >交互式图形可视化

交互式图形可视化
EN

Stack Overflow用户
提问于 2011-09-14 12:55:51
回答 4查看 30.8K关注 0票数 44

情况

类似于这个问题,我正在寻找一种创建GUI的方法,用户可以在这里看到一个图形(在图论意义上)并与之交互。随着时间的推移,车辆将从零移动到节点。用户应该能够添加节点和边缘,添加车辆和设置他们的目的地。

我已经实现了底层的图形模型和业务逻辑,我只需要一个GUI。这意味着我不需要图形算法功能,比如Djistra的算法。

如果可能的话,解决方案应该与平台无关。底层模型是用python编写的,因此GUI解决方案要么需要基于python (更好),要么应该很容易地与python (潜在的IPC)接口。

表现是一个值得关注的问题。它不需要快得令人目眩,但它必须足够快,以跟上底层模型。从理论上讲,图中可能存在的节点、边和车辆的数量没有限制。

可能的办法

我看过各种形象化图书馆:

  • NodeBox
  • NetworkX
  • matplotlib
  • GraphViz

我考虑过使用OpenGL

我曾想过直接画到wxPython

问题

我没有使用任何图形库。我不知道他们是否有能力提供所需的功能。例如,matplotlib在图库中似乎有很多非图论图。除了通过NetworkX,我找不到一个用它实现图形的人的例子。另一个例子是,NetworkX可以绘制沿边缘移动的对象吗?

OpenGL解决方案几乎肯定需要更多的时间来实现。我必须自己编写函数,以便将对象移动到边缘。我必须编写一个函数,用于在正确的位置绘制边缘,并为所有边缘、节点和车辆等绘制标签。我需要实现菜单并从无到有地处理交互。

我不知道如何在wxPython中实现这一点。我只知道如何将它与标准小部件结合使用。更新:我发现了这个问题,它的答案指向wx.lib.oglwx.lib.floatcanvas,它是在纯wxPython中实现解决方案的一种机制。

问题

是否有任何可视化库符合我的要求?那些最合适的是什么?是否还有其他我错过的图书馆可以满足我的要求?类似于JGraph的东西,而不是用于Python,将是合适的。

相对于这些库中的一个,您对在OpenGL或wxPython中实现这一点有什么看法?

还有其他你认为合适的方法吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-09-16 08:02:01

最后,我发现我认为的可视化库无法使物体沿边缘移动。

我对wxPython和它的浮动画布进行了实验,发现使用起来相当直截了当(比OpenGL解决方案简单得多)。这给了我自由的动画,但没有给我任何包装周围显示连接的节点-我不得不自己写。

这是一个很老的问题,所以现在可能会有其他库满足这一要求,或者我所考虑的库已经提出,现在可以这样做了。如果我今天必须从头开始实现它,我将倾向于尝试一个基于web的UI,潜在地使用web套接字来跟上后端的数据速率。不过,我不知道动画的规模会有多大--我发现画布和SVG在同时动画化大量的东西时会变得波涛汹涌。也许WebGL会更适合。

票数 1
EN

Stack Overflow用户

发布于 2013-02-08 14:20:28

您可以考虑使用JavaScript库d3。它有一些奇妙的交互式图形可视化,并且用JavaScript编写,这对于Web来说是很棒的

我不确定实时图形构建功能,但假设简单的节点和边缘添加/删除在所选可视化类型的基础上实现是非常简单的。

当然,您需要像皮耶斯这样的东西来将d3与您的python代码进行接口,所以它可能不合适。

关于nmichaels的回答:由于广泛使用了GraphViz,我不推荐它用于您的目的。它生成漂亮的静态图,但严格来说是非交互的。

票数 8
EN

Stack Overflow用户

发布于 2011-09-14 13:07:06

我的直觉是,使用一些像graphviz这样的东西来呈现图形本身,使用wx来处理您的UI是一个很好的方法。在OpenGL中重新实现所有图形绘制位似乎是一种巨大的浪费。pyGraphViz非常容易使用,因此您可能可以快速获得一些功能,并根据性能的需要进行调优。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7416659

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档