Python 如何绘制信号随时间推移的积分?

Python 如何绘制信号随时间推移的积分?,python,numpy,matplotlib,scipy,Python,Numpy,Matplotlib,Scipy,我有一个随时间变化的信号 我希望以时间为x轴,积分值为y轴,绘制其随时间的积分图 有什么Python方法可以做到这一点吗 更具体地说: 我有一个时间数组,time,还有一个信号数组,signal。它们的尺寸相同 我需要使用scipy.integrate.trapz()在time上集成signal 我希望看到积分随着时间的推移而变化,而不是得到最终积分。尝试使用scipy.integrate.cumtrapz(): plt.plot(time[:-1], scipy.integrate.cumtr

我有一个随时间变化的信号

我希望以时间为x轴,积分值为y轴,绘制其随时间的积分图

有什么Python方法可以做到这一点吗

更具体地说:

我有一个时间数组,
time
,还有一个信号数组,
signal
。它们的尺寸相同

我需要使用
scipy.integrate.trapz()
time
上集成
signal


我希望看到积分随着时间的推移而变化,而不是得到最终积分。

尝试使用
scipy.integrate.cumtrapz()

plt.plot(time[:-1], scipy.integrate.cumtrapz(signal, x=time))
plt.show()
它计算包含累积整数值的数组


稍好一点的答案是使用可选的
“initial”
参数。下面是一个完整的示例:

import scipy.integrate as it
import numpy as np 
import matplotlib.pyplot as plt
t=np.linspace(0,1, 100)
y=t**2
y_int = it.cumtrapz(  y  ,  t, initial=0.0)  # y_int is same size as t
plt.plot(t, y_int)
plt.show()

这避免了像时间[:-1]

x轴不正确这样的奇怪索引。请注意,我没有固定的时间间隔。我有一个时间数组。啊,在这种情况下,你可以用你的时间数组来指示在哪里绘制y值。我已经更新了答案。没错,当你运行代码时,问题来了。plot()中的x和y具有不同的尺寸。y的大小为20123,x的大小为20124。我如何解决这个问题?您只需删除上次的时间值即可。这相当于将积分值与相应梯形的左侧对齐。(您可以修剪第一时间值以与右侧对齐。)请如何操作?对Python来说真的很陌生