我对python编程很新,我试图编写一个程序,从txt文件中绘制图形并稍后插入数据。
要获取数据,我知道我可以使用:
precos = np.genfromtxt('Precos.txt', delimiter=',')
或
precos = sp.loadtxt("Precos.txt", delimiter=",")
数据很简单:
1, 69.00
2, 69.00
3, 69.00
4, 69.00
5, 69.00
6, 69.00
7, 69.00
8, 79.00
9, 56.51
10, 56.51
我也知道我可以使用
plt.plot(precos)
绘制图表,但我不知道如何插图。我看到sp.interpolate.interp1d
可以提供帮助,但我仍然无法理解它。
---- ---- EDIT
好的,我尝试了一种新方法,现在我的代码差不多完成了,但我仍然遇到一个错误。
import scipy as sp
import numpy as np
import matplotlib.pyplot as plt
## Importando os dados numa matriz Nx2
M = sp.loadtxt('Precos.txt', delimiter=',')
## Construindo os vetores X e Y
x=np.zeros(len(M))
y=np.zeros(len(M))
for i in range(len(M)):
x[i] = M[i][0]
y[i] = M[i][1]
##Grahp Plot
plt.plot(x,y)
plt.title("Fone de Ouvido JBL com Microfone T100A - Fevereiro 2017")
plt.xlabel("Dia")
plt.ylabel("Preco em R$")
##Interpolation
F = sp.interpolate.interp1d(x,y)
xn = sp.arange(0,9,0.1)
yn = F(xn)
plt.plot(x, y, 'o', xn, yn, '-')
plt.show()
但现在我得到了: ValueError:x_new中的值低于插值范围。
有什么想法吗?
答案 0 :(得分:0)
sp.interpolate.interp1d
生成一个函数,您可以重复使用该函数在中间点插入原始数据。这里有一些特定的代码可以为它注入一些生命:
import numpy as np
from scipy import interpolate
data = np.array([[1, 69.00],
[2, 69.00],
[3, 69.00],
[4, 69.00],
[5, 69.00],
[6, 69.00],
[7, 69.00],
[8, 79.00],
[9, 56.51],
[10, 56.51]])
x = data[:,0]
y = data[:,1]
# Define an interpolation function
interpolation_function = interpolate.interp1d(x,y,kind='linear')
# Define intermediate points to interpolate at, and print the result
xi = [1, 1.5, 2.5, 9.5]
print(interpolation_function(xi))
给出了结果:
[ 69. 69. 69. 56.51]