【发布时间】:2016-12-01 18:12:53
【问题描述】:
我正在绘制数据,我需要实时显示其傅里叶变换。右键单击绘图并通过绘图选项菜单让我选择功率谱模式,但是有没有办法在首先创建绘图小部件时激活此模式?我需要显示傅里叶变换,而不必通过可点击的菜单。感谢您的帮助。
【问题讨论】:
我正在绘制数据,我需要实时显示其傅里叶变换。右键单击绘图并通过绘图选项菜单让我选择功率谱模式,但是有没有办法在首先创建绘图小部件时激活此模式?我需要显示傅里叶变换,而不必通过可点击的菜单。感谢您的帮助。
【问题讨论】:
似乎这已经有一段时间了,但是由于其他人最终可以从中受益,所以我会加上我的 2 美分:
我发现完成此操作的最简单方法是在创建绘图后以编程方式点击复选框。创建的 PlotItem 有一个 self.ctrl 菜单,所以这样做:
pitem.ctrl.fftCheck.setChecked(True)
应该可以解决问题。
pitem 是 GraphicsLayout 的 addPlot 方法返回的引用。如果您在他们提供的示例中查看 Plotting.py,“https://github.com/pyqtgraph/pyqtgraph/blob/develop/examples/Plotting.py” 第 58 行:
p6 = win.addPlot(title="Updating plot")
在这种情况下,p6 是一个 PlotItem,因此在这种情况下添加以下行:
p6.ctrl.fftCheck.setChecked(True)
会做的。
对于第二种实现方式,还要注意示例中的下一行(第 59 行):
curve = p6.plot(pen='y')
您可以使用通过以下方式返回的 PlotDataItem 引用来完成 FFT 模式:
curve.setFftMode(True)
但这实际上使菜单中的复选标记未选中,并且可能有点令人困惑。
第 64 行还有第三种方法:
curve.setData(data[ptr%10])
会变成:
curve.setData(data[ptr%10],fftMode=True)
这些都是互斥的,所以执行任何应该都可以,但是最后 2 个选项会使菜单中的复选标记未选中,因此,选项 1 是您最好的选择。
【讨论】:
只是添加给定的第一个选项,如果您使用 PlotWidget 类而不是 PlotItem(如果您像我一样使用 QtDesigner 结合 Pyqtgraph 来制作您的 GUI),也可以这样做,您只需必须添加 getPlotItem() 才能访问 ctrl 属性。
例如,如果我的绘图项目名为self.ui4.plot_1(plot_1 是在 QtDesigner 中为 PlotWidget 绘图建立的标签或名称),您必须编写:
self.ui4.plot_1.getPlotItem().ctrl.fftCheck.setChecked(True)
【讨论】: