【发布时间】:2020-03-06 18:23:37
【问题描述】:
我使用数组中的数据绘制了多条线。问题是我想绘制一条新线来显示所有这些线的总和。请记住,每组的 x 值是不同的。 让我举一个我正在尝试做的例子。假设我有 2 组 (x,y) 数据,如下所示:
x1=np.array([1,2,3,4,5])
y1=np.array([1,3,5,7,9])
x2=np.array([3,4,5,6,7])
y2=np.array([2,4,6,8,10])
然后,我使用 np.interp
xvals1=np.linspace(1,5,1000)
yinterp1 = np.interp(xvals1, x1, y1)
plt.plot(xvals1, yinterp1)
xvals2=np.linspace(3,7,1000)
yinterp2 = np.interp(xvals2, x2, y2)
plt.plot(xvals2, yinterp2)
好的,所以现在,我想要一个额外的行来显示这两行的总和。但如果我执行以下操作,它会给我一条绝对错误的线(绿色):
xvals=np.linspace(1,7,1000)
plt.plot(xvals,yinterp1+yinterp2)
有人对此有任何想法吗?
【问题讨论】:
-
怎么了?
y数据无法知道哪个x有意义。您正在绘制一个x, y集,两者的点数相同,因此不会引发错误。唯一有效的数据是yinterp1[1 <= xvals1 & xvals1 <= 5]和yinterp2[3 <= xvals2 & xvals2 <= 7]。 -
当您执行
y1+ y2时,结果为[y1[0]+y2[0], y1[1]+y2[1], ...]。在您的特定情况下,索引对应于不同的值,因此您实际上是在执行[y1[x=1]+y2[x=3], ..., y1[x=5]+y2[x=7]],这没有物理意义。 -
是的,我明白你在说什么。我所说的只是我试图做的,因为我没有任何其他想法,我知道这是错误的,这就是我发布这个问题的原因,以找到正确的方法
-
哦,那没问题,这只是屏蔽数据的问题!请看我的回答:)
标签: python arrays numpy matplotlib plot