使每个Y值对应pyqtgraph中的一个X值

Make each Y value to correspond to an X value in pyqtgraph

我有一个算法可以获取一些数据并实时绘制它们。我有一个 pyqt5 window,我使用 pyqtgraph 在 window 上绘图。我使用的代码片段如下;

import pyqtgraph as pg
from PyQt5.QtWidgets import QMainWindow
from Ui_GraphicsLayout import Ui_GraphicsLayout

class TimeDomainPlotWindow(QMainWindow):
    closing = pyqtSignal()
    def __init__(self, title = "Time Domain Plot", name = "Channel"):
        super().__init__()

        pg.setConfigOption('background', 'w')   

        self.__ui = Ui_GraphicsLayout()
        self.__ui.setupUi(self)

        self.setWindowTitle("Real Time Data - {:s}".format(title))
        self.__plot = self.__ui.widget.addPlot(title = name, row = 0, col = 0)
        self.__pditem = self.__plot.plot(pen = 'k')

    def plot(self, data):
        self.__pditem.setData(data)

我得到的情节是这样的:

所以我发送了一个包含 1000 个值的数组并绘制了它们。因为我的数组中有 1000 个值,所以它从 0 到 1000 对 X 轴进行编号。我想更改 X 轴中的值范围,并使我的数据数组中的每个值对应于图表中的 X 值。所以就像在 excel 中你有两列数据,其中一列是你的 X 轴,另一列是你的 Y 轴。我想,假设有一个 X 轴,其值从 1 到 100,但只有 10 个 Y 值,并使这 10 个值中的每一个成为特定 X 轴值处的一个点。可以这样做吗?

setData 函数有一个可选的 x 参数,它执行您所描述的操作,因此您的 plot 函数将变为:

    def plot(self, data, x_list):
        self.__pditem.setData(y=data, x=x_list)

其中 x_list 是一个与 data 长度相同的列表。

要将 x 轴更改为 1 到 100,您可以使用 setXRange 函数,请参阅此 documentation