问题标签 [pyqtgraph]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
16453 浏览

python - 实时数据监视器:PyQtGraph

我正在做一个项目,我将不得不分析来自设备的信号。我有一个正在工作的库,可以从设备中获取数据。截至目前,我正在收集数据然后绘制它。我有兴趣构建一个可以实时绘制图表的实时数据监视器。经过搜索,我发现 PyQtGraph 非常适合这项任务。我不熟悉 Qt,所以我正在寻找可以根据需要进行修改的示例。PyQtGraph 文档中给出的一些示例会实时更新绘图,但我需要像实时监视器这样的东西 - 图表在不断接收数据时向右移动。

如果它类似于已知的连续函数,我可以x - w*tt时间来更新输入,以使波向右移动。但这是离散数据,所以我不确定如何使用 PyQtGraph 让它工作。因此,如果有人可以就如何进行操作提供一些指示,那就太好了。

到目前为止,这就是我所拥有的

代码

这是每隔 2 秒更新一次数据,但我希望它向右移动。

0 投票
1 回答
439 浏览

python - 在 Python 中集成两个事件处理程序

我有两个 Python 程序。我们称它们为 Prog1.py 和 Prog2.py 。Prog1 正在帮助我从外部设备获取实时数据。到目前为止,当它获得数据时,它会在屏幕上打印出来。有一个 while 循环在运行,在每次迭代中它都会打印出获取的新数据集。现在 Prog2 是一个使用 PyQtGraph 构建的 Python 程序,旨在像监视器一样实时绘制数据。截至目前,Prog2 所做的是(即,当它单独运行时),它绘制已经获取的数据。这是一个动人的情节。所以 Prog2.py 有一个更新函数,它被定时器以指定的时间间隔重复调用,以便用下一个数据点更新图形(使其向右移动)。

由于 Prog1 和 Prog2 是具有自己的事件循环过程的独立事件,我不确定如何链接它们。我认为一个天真的想法是并行运行 Prog1.py 和 Prog2.py 并要求 Prog1.py 将数据保存到文件中(也许腌制它?)并要求 Prog2.py 从中读取然后绘制图形。但我不相信这一点。这看起来很脏。不知何故,我想在 Prog1.py 中运行整个 Prog2.py 代码。有没有一种干净的方法可以做到这一点?

编辑-代码

程序1.py

Prog2.py 是 PyQtGraph 代码,通过定时器来更新图形并使其滚动

0 投票
1 回答
1396 浏览

pyqtgraph - PyQtGraph:使用 ImageView 冻结实时视频流

大家好,

我正在为相机编写一个 GUI,我想要一个带有来自相机的实时流的小部件。

按照其中一个示例,我正在这样做:

这确实有效,如果不是因为我还需要侧面的强度直方图,我会很高兴。

所以我尝试像这样更改第一段:

这仅适用于几帧(我可以看到图像发生变化并且直方图相应移动),然后整个 GUI 冻结。有没有人见过这种行为?

先谢谢了,

费德里科

0 投票
1 回答
1540 浏览

python - 使用 Qt 在 PlotWidget 上选择点

我是 python/pyside/pyqtgraph 的新手,我有点卡在我的程序中。

所以,我有一个代表 10000 个值的 numpy.ndarray,我使用 plot 方法将它绘制在 PlotWidget 中。结果还可以,但现在我想允许用户选择曲线的点,这样我就可以保存该点的 X 轴并在以后使用它。

我想做的是创建一个 QPushButton ,单击它时,它会等待用户通过左键单击选择曲线上的两个点,然后保存 X 轴。在概念上似乎很简单,但我没有找到这样做的好方法。如果你能给我一个例子或其他东西,我会非常高兴,我也愿意接受任何偏离这个用例的建议。

我可以通过以下几行恢复代码:

谢谢,摩根

在 Zet4 回答后编辑:

感谢您的回答,它帮助我入门。最后,我做了一个 PlotWidget 的子类:

然后我在我的窗口中使用它,将按钮信号与改变我的 PltWidget 的布尔值的插槽连接起来:

我可能会使用您的缓冲策略来命令用户进行两个选择。但是,我仍然需要知道如何从我单击的位置获取 PlotWidget 的 X 轴。如果有人使用 pyqtgraph 知道答案,请告诉我。谢谢。

0 投票
1 回答
859 浏览

pyqt - PyQtGraph:GUI 仅在一个进程中无响应

我正在为摄像机编写一个 GUI,它基本上可以在两种模式下运行,我称之为 liveview 和 recordview。唯一的区别是我在后者中录制而只在前者中观看。

在实时取景模式下,图像会正确更新。我设置了一个触发记录视图的按钮,但在此采集过程中,GUI 变得无响应并且图像没有得到更新。让我向您展示代码的相关部分:

如您所见UpdateWhileRec,每次采集只运行一次,而updateview运行直到viewtimer.stop()被调用。

我是 PyQt 和 PyQtGraph 的新手,所以无论解决我当前问题的特定方式如何,都可能有更好的方法来做其他所有事情。如果是这样,请告诉我!

先谢谢了

0 投票
1 回答
2339 浏览

python-3.x - 将 pyqtgraph(绘图)添加到 QApplication

嘿,

太好了,我用 QTDesigner 创建了 MainWindow.ui 文件。然后我使用以下命令将此 gui 导入到我的 .py 文件中:

如果我用 pyuic4 编译这个 .ui 文件有什么区别?(每次我编译我的 .ui 文件时,我都会收到以下错误:

MainWindow 创建第一个窗口,其中放置了所有按钮等。

此外,我还有一个名为“PlotWindow”的第二类。这个类看起来像这样:

现在如您所见,PloWindow - 类创建了第二个窗口。

我如何将 pg.GraphicsLayoutWidget() 实现到 MainWindow - 类中?

不知道这是否可以帮助你?!?:

我正在使用 python3 !随时发表评论:)谢谢!

0 投票
1 回答
3677 浏览

python - 使用 pyqtgraph 添加新数据栏的最快方法

我想以最快的方式刷新蜡烛图。但是按照修改后的示例,我每次都必须绘制整个图表,即使我只添加了一个新柱。原因是当我再次调用该对象以绘制附加数据时,QPainter 对象被清除。它可能很慢。从字面上看,我只想“添加”一个条形数据。

那么有人可以教我如何重新开始绘画或给我好的想法吗?

0 投票
2 回答
366 浏览

python - pyqtgraph GraphItem中带方向的边

我正在尝试使用 pyqtgraph 在 Python 中可视化控制流图。我有以下两个问题。

  1. 如何通过方向可视化边缘?
  2. 如何可视化自我边缘?

我尝试查看文档,但找不到。显然,我没有时间阅读所有内容!

0 投票
1 回答
464 浏览

pyqtgraph - 在 ImageView 中显示 3D 数据的参数值

此示例随模块一起提供:

截屏

我怎样才能知道底部滑块上参数(标记为红色)的确切值?到达那里的方式并不重要——无论是作为工具提示还是作为在屏幕上绘制的值等。

0 投票
1 回答
1861 浏览

python - 如何在 PlotItem 内设置轴位置

我正在使用 PyQt 和 pyqtgraph 构建一个实时数据监控应用程序。GUI 具有三个垂直布局的 PlotWidget。

这些图显示了传感器的位置。第一个显示 X 坐标,第二个显示 Y 坐标,第三个绘图显示 Z 坐标。横坐标是时间,这对于所有三个图都是相同的。

我的问题是三个纵坐标轴(即 Y 轴)的水平位置在 PlotWidget 内移动并且不对齐。我认为这主要是由于 Y 轴刻度标签,根据显示的位数可能需要更多或更少的空间。

这是一种修复或手动设置绘图轴位置的方法吗?

谢谢

作为参考,这是我设置 PlotItems 的方式:

这就是我进行绘图的方式:

这是代码的精简版本: