如何在matplotlib中绘制数据和函数之间的差异

时间:2017-01-05 22:40:26

标签: python matplotlib

我在一个名为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中是否有更多惯用的方法,并不需要明确使用第二个文件,

2 个答案:

答案 0 :(得分:2)

我不反对编写代码。:)

为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()

答案 1 :(得分:0)

我不会为你编写代码,但这会帮助你

首先将你的txt文件放入pandas: Load data from txt with pandas

接下来,使用apply函数进行减法: How to apply a function to two columns of Pandas dataframe

最后你绘制它们: How to plot two columns of a pandas data frame using points?

亲切的问候, 斯泰恩