Python绘制多项式

时间:2019-03-16 16:56:09

标签: python matplotlib

由于我是这门语言的新手,所以我在python上有点挣扎。基本上我想做的是从txt文件x,y点读取并绘制它们。之后,绘制其系数存储在另一个文本文件中的多项式。 我已经实现了绘制我认为的x,y坐标的图,但似乎无法将头围绕着这个pyplot以及如何输入数据来绘制多项式。多项式和x,y坐标没有共同之处。

import matplotlib.pyplot as plt
import numpy as np
x = []
y = []
with open ( "Points.txt","r") as f:
    for line in f:
        x.append(line.split()[0])
        y.append(line.split()[1])
x = list(map(int, x))
y = list(map(int, y))
plt.figure(figsize=(10,10))
plt.gca().set_aspect("equal")
plt.plot(x,y,'ro')
plt.axis([-15, 15, -15, 15])
j = open ("Lines.txt")
z = []
myReadLine = j.readline()
for i in range (6):
    z.append(myReadLine.split()[i])
z = list(map(int, z))
poly = np.poly1d(z)
plt.plot(i,poly(i))
plt.show()
j.close()

Points.txt的一些输入数据:

-2 1
8 0
1 -3
-7 -7

Lines.txt的一些输入数据:

6 4 1 1 -3 -5 
10 -5 -9 -10 1 -3 
9 3 -9 -1 1 5 

1 个答案:

答案 0 :(得分:0)

您需要为poly对象提供多个x坐标才能绘制线条

plt.plot(i,poly(i), label="Poly")

将绘制点(i, poly(i)(这是单个点,因为i是单个标量),这与绘制(x,f(x))相同。您需要提供类似数组的对象,以便在给定范围内绘制多项式。将上面的行更改为类似

xi = np.linspace(-15,15, 200)
plt.plot(xi,poly(xi))

会给你这个(用于演示的标签):

Polynomial and data

我相信这是您想要的。