pyqtgraph-对ImageItem的轴使用任意值

问题描述

我感觉这里缺少明显的东西,但是我在互联网上找不到任何有用的东西。

我有一个使用pyqtgraph显示信号的应用程序。该信号有1000个样本,代表0-0.5范围内的值。 用正确的X轴值绘制它很简单-我只是制作一个具有正确范围和元素数的linspace并将其用作x中的plot

但是如何对ImageItem内的PlotWidget做同样的事情?它使用元素数作为X轴,但我无法弄清楚如何告诉它使用正确的值。

看一下屏幕截图-我需要为图像使用与下面的图相同的X轴值。

application screenshot

有关代码的相关部分:
首先,创建我的X值:

self.xval_h = numpy.linspace(0,0.5,len(self.spectrum_h[-1]))
self.xval_v = numpy.linspace(0,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)

因此,问题归结为如何将xvalImageItem(或包含PlotWidget的{​​{1}})一起使用?

非常感谢您的帮助!

解决方法

您可以使用“ setRect”定义图像坐标,并传递“ QRectF(x,y,width,height)”(如果是pg.setConfigOptions(imageAxisOrder = “ row-major”)已启用):

image_width = abs(self.xval_h[0]-self.xval_h[0])
image_height = abs(self.xval_h[0]-self.xval_h[0])  # if x and y-scales are the same
pixel_size = image_width/(self.xval_h.size-1)
self.image_h.setRect(QRectF(self.xval_h[0]-pixel_size/2,self.xval_h[0]-pixel_size/2,image_width,image_height))

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...