Python 交互式图形可视化 处境
与之类似,我正在寻找一种方法来创建一个GUI,在这个GUI中,用户能够看到图形(从某种意义上)并与之交互。随着时间的推移,车辆将在图中从无移动到节点。用户应该能够添加节点和边缘,添加车辆并设置其目的地 我已经实现了底层的图形模型和业务逻辑,我只需要一个GUI。这意味着我不需要像Djistra算法那样的图形算法功能 如果可能,解决方案应独立于平台。底层模型是用python编写的,因此GUI解决方案要么需要基于python(最好是基于python),要么应该易于与python接口(可能是IPC) 性能是一个问题。它不需要太快,但必须足够快,以跟上底层模型。理论上,图中可能存在的节点、边和车辆的数量没有限制 可能的办法 我查看了各种可视化库:Python 交互式图形可视化 处境,python,user-interface,Python,User Interface,与之类似,我正在寻找一种方法来创建一个GUI,在这个GUI中,用户能够看到图形(从某种意义上)并与之交互。随着时间的推移,车辆将在图中从无移动到节点。用户应该能够添加节点和边缘,添加车辆并设置其目的地 我已经实现了底层的图形模型和业务逻辑,我只需要一个GUI。这意味着我不需要像Djistra算法那样的图形算法功能 如果可能,解决方案应独立于平台。底层模型是用python编写的,因此GUI解决方案要么需要基于python(最好是基于python),要么应该易于与python接口(可能是IPC) 性
有没有其他我认为不合适的方法?我的直觉告诉我,使用graphviz之类的工具来渲染图形本身,使用wx来处理UI是一个很好的方法。在OpenGL中重新实现所有的图形绘制看起来像是一个巨大的浪费。使用起来非常方便,所以您可以快速地获得一些功能,并根据需要调整性能。 < P>您可以考虑JavaScript库。它有一些奇妙的交互式图形可视化,并且是用JavaScript编写的,非常适合Web UI 我不确定实时图形构建功能,但假设在您选择的可视化类型上实现简单的节点和边添加/删除是微不足道的 当然,您需要一些类似于将d3与python代码接口的东西,因此它可能不适合
关于nmichaels的回答:由于广泛使用GraphViz,我不建议您使用它。它生成漂亮的静态图,但严格无交互作用。 您可能还需要考虑NETWORKXYVIEW:
我最终发现,我所考虑的可视化库无法为沿边缘移动的对象设置动画 我尝试了wxPython,以及它的floatcanvas,发现使用起来非常简单(比OpenGL解决方案简单得多)。这让我可以自由地根据需要设置动画,但没有给我任何包装来显示连接的节点——这是我自己写的
这是一个很老的问题,所以现在可能有其他图书馆满足这一要求,或者可能是我考虑的图书馆已经进步,现在可以做到这一点。如果我今天必须从头开始实现它,我会倾向于试验基于web的UI,潜在地利用web套接字来跟上后端的数据速率。我不知道动画的缩放效果如何——我发现画布和SVG在同时为大量事物制作动画时会变得不稳定。也许WebGL更适合。谢谢,我就是这么想的。您知道pyGraphViz是否支持沿边缘部分绘制对象并确定单击哪个节点进行交互?GraphViz无法判断单击哪个节点。我不知道它是否支持从输出图片上的坐标到节点。我相信你可以在边上贴标签,但我不知道在更具体的位置有更详细的对象图。据我所知,matplotlib为交互部分提供了挂钩。也许你最好还是破解NetworkX。我正在寻找相同的解决方案,在我读了你的帖子后,我搜索NetworkX的图形和d3使用的JS对象之间的任何连接,正如你可以看到的,更好的解决方案是
NetworkX.readwrite.json\u Graph.node\u link\u data
你介意描述一下你最终使用的框架吗?这将对我(可能还有其他人)非常有帮助,寻找非常相似的东西并探索这些库。当然。我会补充一个答案,这样我们就可以结束这个问题了。