【发布时间】:2020-12-16 12:27:19
【问题描述】:
我觉得我在这里遗漏了一些明显的东西,但我没有在互联网上找到任何有用的东西。
我有一个使用 pyqtgraph 显示信号的应用程序。该信号有 1000 个样本,代表 0 - 0.5 范围内的值。
用正确的 X 轴值绘制它很简单 - 我只是制作了一个具有正确范围和元素数量的 linspace,并将其用作 plot 中的 x。
但是如何对PlotWidget 中的ImageItem 执行相同的操作?它使用元素数量作为 X 轴,我无法弄清楚如何告诉它使用正确的值。
看一下屏幕截图 - 我需要为图像使用与下图相同的 X 轴值。
对于相关的代码位:
首先,我创建我的 X 值:
self.xval_h = numpy.linspace(0, 0.5, len(self.spectrum_h[-1]))
self.xval_v = numpy.linspace(0, 0.5, len(self.spectrum_v[-1]))
对于情节和图像的更新:
def update_spectrum(self):
self.HSpectrum.plot(self.xval_h, self.spectrum_h[-1], clear=True)
self.VSpectrum.plot(self.xval_v, self.spectrum_v[-1], clear=True)
def update_trace(self):
self.image_h.setImage(numpy.array(self.spectrum_h).T)
self.image_v.setImage(numpy.array(self.spectrum_v).T)
所以,问题归结为如何将我的xvals 与ImageItem(或包含ImageItem 的PlotWidget)一起使用?
非常感谢您的帮助!
【问题讨论】:
-
也许,这个答案 (stackoverflow.com/a/41963986/11827059) 会对你有所帮助。
-
我找到并尝试了。它原则上可以工作,但它会完全按照我指定的方式生成刻度。因此,对于全范围,我每一个值都会得到一个刻度,如果我减少刻度的数量,那么无论缩放级别是多少,都会应用相同的刻度。这意味着我需要手动将刻度密度调整为缩放级别。我正在寻找的是一种使用默认刻度行为将 0-1000 范围映射到 0-0.5 范围的好方法。