2015-08-04 3 views
0

Я хочу построить график с несколькими кривыми (хотя в этом конкретном примере все графики являются линейными), а затем нарисуйте сумму графиков как дополнительный график.
Мне было интересно, существует ли встроенный способ сделать это, а не вычислять для каждой новой (x, y) точки координаты всех остальных кривых в этой точке и суммировать их.
Вот быстрый пример (он работает как автономный сценарий):Вычисление суммы кривых в pyqtgraph

from pyqtgraph.Qt import QtGui, QtCore 
import pyqtgraph as pg 

app = QtGui.QApplication([]) 
win = pg.GraphicsWindow(title="For Test") 
plot = win.addPlot(title='Test') 

#First plot: 
x = [1,3,5,7] 
y = [1,2,1,2] 
curve1 = plot.plot(x=x, y=y, pen='r') 
#Second plot 
x = [2,4,6,8] 
y = [0.5,4,2,2] 
curve2 = plot.plot(x=x, y=y, pen='g') 

if __name__ == '__main__': 
    app.exec_() 

Ожидаемый результат что-то вроде:
х = [1, 2, 3, 4, 5, 6, 7, 8]
y = [1, ~ 2, ~ 4, ~ 5.5, ~ 8, ~ 3.5, 4, 2]
Эта проблема становится немного сложнее, если есть реальные кривые. Так есть ли встроенный способ сделать это?

ответ

0

Сомневаюсь, что для этого есть встроенный модуль. У вас разные точки на каждой кривой. Что вам нужно сделать:

1 - Построить вектор x, общий для обеих кривых. Я предлагаю

np.linspace(min(x1.min(), x2.min(), max(x1.max(), x2.max(), n_points) 

2 - интерполировать значения Y каждой кривой, чтобы найти значения для общего х вектора

3 - Добавить интерполированные кривые и построить его

См this answer для того, как интерполировать кривую от известных значений x и y

Смежные вопросы