Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python matplotlib绘制不同类型数组的两行之和_Python_Matplotlib - Fatal编程技术网

Python matplotlib绘制不同类型数组的两行之和

Python matplotlib绘制不同类型数组的两行之和,python,matplotlib,Python,Matplotlib,我在图上画了两条线,但它们来自两个不同形状的数组,我怎么能画出它们的和呢 e、 g.在下图中,我有第1行和第2行的数据,如何才能有“第1行+第2行” 您需要在公共基础上对这两个数据集进行插值。然后你可以简单地把它们加起来 import numpy as np import matplotlib.pyplot as plt x1, y1 = [1,2,3],[1,1,1] x2, y2 = [1.5,2.5],[2,2] # get a sorted list of all x values x

我在图上画了两条线,但它们来自两个不同形状的数组,我怎么能画出它们的和呢

e、 g.在下图中,我有第1行和第2行的数据,如何才能有“第1行+第2行”


您需要在公共基础上对这两个数据集进行插值。然后你可以简单地把它们加起来

import numpy as np
import matplotlib.pyplot as plt

x1, y1 = [1,2,3],[1,1,1]
x2, y2 = [1.5,2.5],[2,2]
# get a sorted list of all x values
x = np.unique(np.concatenate((x1,x2)))
# interpolate y1 and y2 on the combined x values
yi1 = np.interp(x, x1, y1, left=0, right=0)
yi2 = np.interp(x, x2, y2, left=0, right=0)


plt.plot(x1, y1, label="Line 1")
plt.plot(x2, y2, label="Line 2")
plt.plot(x, yi1 + yi2, label="Line 1 + Line 2")

plt.legend(loc="upper right")
plt.show()

为什么这个
plt.plot([1,1.5,2,2.5,3],[1,3,3,1],label='line 1+lin 2')
代表
line 1
line 2
的总和?@Giorgosmyriantous我想把他们的大酒杯加起来,特别是在1.5到2.5的范围内。对于所示的每个系列,它们的y值是否应该是恒定的?您需要一个足够聪明的算法,将所有值分组到同一类别的整数之间。对我来说并不微不足道me@ReedinationerNot事实上,我的数据要大得多,但没有对齐。我只是做了一个简单的样品。
import numpy as np
import matplotlib.pyplot as plt

x1, y1 = [1,2,3],[1,1,1]
x2, y2 = [1.5,2.5],[2,2]
# get a sorted list of all x values
x = np.unique(np.concatenate((x1,x2)))
# interpolate y1 and y2 on the combined x values
yi1 = np.interp(x, x1, y1, left=0, right=0)
yi2 = np.interp(x, x2, y2, left=0, right=0)


plt.plot(x1, y1, label="Line 1")
plt.plot(x2, y2, label="Line 2")
plt.plot(x, yi1 + yi2, label="Line 1 + Line 2")

plt.legend(loc="upper right")
plt.show()