我在名为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()

10-02 23:43