使每个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
我有一个算法可以获取一些数据并实时绘制它们。我有一个 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