问题描述
我感觉这里缺少明显的东西,但是我在互联网上找不到任何有用的东西。
我有一个使用pyqtgraph显示信号的应用程序。该信号有1000个样本,代表0-0.5范围内的值。
用正确的X轴值绘制它很简单-我只是制作一个具有正确范围和元素数的linspace
并将其用作x
中的plot
。
但是如何对ImageItem
内的PlotWidget
做同样的事情?它使用元素数作为X轴,但我无法弄清楚如何告诉它使用正确的值。
有关代码的相关部分:
首先,创建我的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)
因此,问题归结为如何将xval
与ImageItem
(或包含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))