在我的 PyQt5 GUI(非基于 Web 的应用程序)中嵌入图形(数据可视化)的最佳方式

Posted

技术标签:

【中文标题】在我的 PyQt5 GUI(非基于 Web 的应用程序)中嵌入图形(数据可视化)的最佳方式【英文标题】:Best way to embed graphs (Data visualization) in my PyQt5 GUI (Non-Web Based application) 【发布时间】:2017-07-12 20:50:45 【问题描述】:

免责声明:如果这个问题是基本的,我对编码很抱歉。

我目前正在制作一个程序,该程序会进行一些测量并将数据格式化为 csv 文件。现在我希望能够在我用 PyQt5 制作的应用程序中绘制这些测量值。

我一直在寻找可以用来绘制数据的库。我可以嵌入到我的应用程序中并且不需要在线依赖的东西。

我研究了 pygal,但 pygal 的问题在于它使用需要互联网连接的 svg 文件,或者将图形保存为 png。

我希望能够在我的应用程序窗口中显示数据,让用户选择在我的窗口中交互和调整数据,然后选择是否保存图形。

我不确定这是否属实,但到目前为止我查看的库(情节,散景)一直针对使用 html 嵌入的 Web 开发应用程序和网站。我只是想知道是否可以将这些库作为离线版本嵌入到我的 GUI 中。

如果可以在我的应用程序中使用 pygal,将图形添加到我的布局的语法是什么样的?

【问题讨论】:

看看pyqtgraph 【参考方案1】:

如果你能够在 PyQt5 中显示 html/javascript/svg,你可以离线使用 pygal。

使用方法

chart.render()

获取 SVG,并将以下 html 字符串中的“pygal_render”替换为 SVG。

<!DOCTYPE html>
<html>
  <head>
  <script type="text/javascript" src="http://kozea.github.com/pygal.js/javascripts/svg.jquery.js"></script>
  <script type="text/javascript" src="http://kozea.github.com/pygal.js/javascripts/pygal-tooltips.js"></script>
    <!-- ... -->
  </head>
  <body>
    <figure>
      pygal_render
    </figure>
  </body>
</html>

要使其离线,请下载 JS 文件并将其放入脚本标签的头部,而不是链接它。

【讨论】:

以上是关于在我的 PyQt5 GUI(非基于 Web 的应用程序)中嵌入图形(数据可视化)的最佳方式的主要内容,如果未能解决你的问题,请参考以下文章

PyQt5 GUI 无法正确加载

python GUI编程(基于PyQt5)

在 PyQt5 中获取 GUI 的标准调色板

PyQt5应用与实践

从另一个 GUI 文件 PyQT5 打开 GUI 文件

项目实战基于Pthon+PyQt5的GUI点名程序(附完整源码)