图上的二次趋势线方程?

时间:2017-09-09 08:31:57

标签: python numpy matplotlib

我已经看过许多用于在图上显示线性趋势线方程的示例,但是没有找到一个用于显示更高阶的方程。我认为它会类似,但我一直都会遇到错误。我觉得这与我在print语句中不理解z的目的有关。这是我的代码,提前谢谢!

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np


df=pd.read_csv('myfile', delimiter=',',  usecols=[1,4], names=['Time','Position'])

plt.figure(figsize=(9,6))
plt.suptitle('')

x=df['Time']
y=df['Position']
plt.subplot(1,1,1)
plt.tick_params(labelsize=6)
plt.plot(x, y, 'o')

z = np.polyfit(x, y, 2)
p = np.poly1d(z)
plt.plot(x,p(x),"r--")

plt.xlabel('Time (s)', fontsize=9)
plt.ylabel('Position (mm)', fontsize=9)
plt.title('13.087 Degree Incline', fontsize=10, weight='bold')
plt.legend( loc=2, prop={'size': 6})
plt.tight_layout()

print "y=%.6fx^2+%.6fx+(%.6f)"%(z[0],z[1])

plt.show()

编辑: 当在python2中运行时,我得到了

File "scriptname.py", line 27, in <module>
print "y=%.6fx^2+%.6fx+(%.6f)"%(z[0],z[1])
TypeError: not enough arguments for format string

在python3中运行时,我得到:

    File "scriptname.py", line 27
print "y=%.6fx^2+%.6fx+(%.6f)"%(z[0],z[1])
                             ^
SyntaxError: invalid syntax

1 个答案:

答案 0 :(得分:0)

原则上,错误信息很好地解释了什么是错误的。 在字符串"y=%.6fx^2+%.6fx+(%.6f)"中,您有3个格式说明符,稍后您只提供2个参数(%(z[0],z[1])

解决方案当然是提供与格式说明符一样多的参数。

print "y=%.6fx^2+%.6fx+(%.6f)"%(z[0],z[1],z[2])

在python3中,一旦使用print function print(arg)而不是print 语句 {{1},最终会出现同样的错误就像在python 2中一样。

print arg