我正在绘制数据,我需要实时显示其傅里叶变换。右键单击绘图并通过“绘图选项”菜单可以选择“功率谱”模式,但是在创建绘图窗口小部件时,有没有办法让此模式处于活动状态?我需要显示傅里叶变换而无需浏览可点击的菜单。谢谢你的帮助。
答案 0 :(得分:1)
似乎已经出现了一段时间,但由于其他人最终可以从中获益,我将加上我的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是最好的选择。
答案 1 :(得分:0)
只是添加第一个选项,如果你使用PlotWidget类而不是PlotItem(如果你像我一样,使用QtDesigner结合Pyqtgraph来制作你的GUI),这也可以做到,你只需要必须添加getPlotItem()才能访问ctrl属性。
例如,如果调用我的绘图项self.ui4.plot_1
(plot_1是在QtDesigner中为PlotWidget绘图建立的标签或名称),则必须写:
self.ui4.plot_1.getPlotItem().ctrl.fftCheck.setChecked(True)