PyQtGraph PlotWidget:如何强制每次绘制(更改范围)以进行“实时”绘图
Posted
技术标签:
【中文标题】PyQtGraph PlotWidget:如何强制每次绘制(更改范围)以进行“实时”绘图【英文标题】:PyQtGraph PlotWidget : how to force each draw (changing range) for "real time" plotting 【发布时间】:2014-05-12 21:09:10 【问题描述】:我正在尝试让 PlotWidget 快速移动(从左到右),就像它是心电图一样。这是我想要的一个例子(除了他使用 PyQwt (这与我的项目不兼容,因为我使用 PySide(而不是 PyQt),而且我希望 X 轴也从左向右移动):
但是,我不知道该怎么做。我可以绘制抓取图,我可以使用以下方法使其从左向右移动:
myPlotWidget.setXRange(0, 100)
然后
myPlotWidget.setXRange(1, 101)
这使它看起来像是从左到右移动(1 个单位),但我现在不知道如何使其平滑和自动。我试图制作一个看起来像这样的循环:
for i in range(1000):
myPlotWidget.setXRange(10+i, 100+i, update=True)
但是在循环过程中情节没有更新......情节只有在循环结束时才会更新,所以我看不到它从左到右“移动”,我只有最终结果。
有人可以帮助我吗?有什么办法可以强制重绘循环的 1000 次?
我一开始认为它计算速度太快,所以我尝试了这个
for i in range(1000):
myPlotWidget.setXRange(10+i, 100+i, update=True)
time.sleep
但它当然没有用。
非常感谢您的帮助!
【问题讨论】:
见:***.com/questions/18080170/… 【参考方案1】:在循环结束时,当它被更新时,你有类似myPlotWidget.update()
或myPlotWidget.canvas.draw()
的东西,对吧?
只需将其移入 for 循环即可。但是,如果您尝试绘制大量数据,这会变慢。
【讨论】:
否; QWidget.update() 仅安排 重绘以供以后使用。您必须调用 QApplication.processEvents() 或返回 Qt 事件循环。 Luke 是对的,非常感谢您的帮助。它与 QApplication.processEvents() 完美配合。您能否将其发布为问题的答案(而不是评论),以供将来可能遇到相同问题的人使用。我很高兴将其作为“有用的答案”进行检查:) 再次感谢您以上是关于PyQtGraph PlotWidget:如何强制每次绘制(更改范围)以进行“实时”绘图的主要内容,如果未能解决你的问题,请参考以下文章
如何根据数据获得具有可变颜色和网格的 pyqtgraph plotwidget?
在 PlotWidget GUI 中运行实时 pyqtgraph