如何使用 PyQtGraph 获取堆栈图?

How to get a stackplot with PyQtGraph?

Matplotlib库中的stackplot函数可以如下使用:

import matplotlib.pyplot as plt
import numpy as np
import numpy.random as npr

x = np.linspace(0,10,50)
y = [npr.rand(50) for i in range(4)]

plt.stackplot(x,y)
plt.show()

我需要为项目使用 PyQtGraph 库:

    import pyqtgraph as pg
    from pyqtgraph.Qt import QtGui
    import numpy as np
    import numpy.random as npr

    x = np.linspace(0,10,50)
    y = [npr.rand(50) for i in range(4)]

    win = pg.GraphicsWindow()
    graph = win.addPlot()
    #stackplot function
    QtGui.QApplication.instance().exec_()

如何获得堆栈图?

Pyqtgraph 没有内置的堆叠绘图功能,但您可以自己编写,只需在要堆叠的每条线之前汇总绘图数据,并使用 PlotCurveItemfillLevelfillBrush 个参数。示例:

import pyqtgraph as pg
import numpy as np

data = np.random.normal(size=(7,10), scale=0.1, loc=1)
stacked = np.cumsum(data, axis=0)

plt = pg.plot()
for i,row in enumerate(stacked):
    curve = plt.plot(row, fillLevel=0, fillBrush=(i,10))
    curve.setZValue(10-i)