使用Polyfit创建具有动态CSV的3次多项式

时间:2018-06-26 18:31:31

标签: python pandas numpy dataframe plot

虽然我可能会得到不止三列的数据,但数据的外观如何:

TotalArea,Pressure,Intensity
12054.2,-0.067,39.579
11980.2,-0.061,41.011
11948,-0.055,42.08
11889.5,-0.04,45.732
11863.6,-0.03,50.573

我的目标:我想获取此CSV文件并创建一个适合于标记为IntensityTotalArea的列的多项式。

我的代码(忽略了我认为纯粹是装饰性的内容):

Graph = pd.read_csv("C:Data.csv")

Pl = Graph.dropna()

Bottom = Pl["TotalArea"]
Right = Pl["Intensity"]
arr = Pl.values    


x = Bottom

y2 = Right
fig = plt.figure()
ax1 = fig.add_subplot(1, 1, 1)
xx = arr[:, [0]]
b = xx.ravel()
print(b)
yy = arr[:, [2]]
c = xx.ravel()



y3 = np.polyfit(b, c, 3)

ax2 = ax1.twinx()
ax2.plot(x, y2, color = "r", label='Intensity /Area')  


plt.show()

我的错误:(与polyfit值有关)

Traceback (most recent call last):
  File "/mnt/WinPartition/Users/tomchi/Documents/Programming/Eclipse/PythonDevFiles/so_test.py", line 47, in <module>
    ax2.plot(x, y3)
  File "/usr/local/lib/python3.5/dist-packages/matplotlib/__init__.py", line 1855, in inner
    return func(ax, *args, **kwargs)
  File "/usr/local/lib/python3.5/dist-packages/matplotlib/axes/_axes.py", line 1527, in plot
    for line in self._get_lines(*args, **kwargs):
  File "/usr/local/lib/python3.5/dist-packages/matplotlib/axes/_base.py", line 406, in _grab_next_args
    for seg in self._plot_args(this, kwargs):
  File "/usr/local/lib/python3.5/dist-packages/matplotlib/axes/_base.py", line 383, in _plot_args
    x, y = self._xy_from_xy(x, y)
  File "/usr/local/lib/python3.5/dist-packages/matplotlib/axes/_base.py", line 242, in _xy_from_xy
    "have shapes {} and {}".format(x.shape, y.shape))
ValueError: x and y must have same first dimension, but have shapes (310,) and (2,) 

所以,我的问题是:这到底是什么意思?是否由于熊猫数据框?我可以快速解决吗?我可以再帮忙吗?

我现在意识到polyfit只是给我多项式的系数

[ -2.27230868e-23   2.74362531e-19   1.00000000e+00  -1.90568829e-12]

0 个答案:

没有答案