我在名为values.txt的文件中有一个x,y值的数据集,如下所示:
1 32432.4323
2 23432.1143
.
.
.
999 1111.23432
我也有一个函数f(x),2 * x ^ 2 + 1
我想绘制函数和y值之间的差异曲线。像这样:
1 32432.4323 - f(1)
2 23432.1143 - f(2)
.
.
.
999 1111.23432 - f(999)
我可以通过计算差异并将其放入单独的文件values_diff.txt并将其加载到matplotlib中来做到这一点,但是我想知道在matplotlib中是否有一种更惯用的方式来实现,而无需显式使用第二个文件,
最佳答案
我不反对编写代码。:)
为x值创建一个矢量,为y值创建一个矢量,然后为y和函数值之间的差异创建一个矢量。在这段代码中,我为缺少的y值提供了伪值。然后,只需先将y值与x值相对应,然后将差值与x值相对应即可。
import matplotlib.pyplot as plt
f = lambda x: 2*x**2 +1
x = list(range(1,1000))
y = [32432.4323, 23432.1143] +[23432.1132-10*k for k in range(1,997)]+ [1111.23432]
diffs=[]
for an_x, a_y in zip(x,y):
diffs.append(a_y-f(an_x))
plt.plot(x, y, 'r-')
plt.plot(x, diffs, 'b-')
plt.show()