我有一个pandas数据框,试图在其中绘制我要做的两列:
from matplotlib import pyplot as plt
import numpy as np
fig, ax = plt.subplots()
df.plot(x = 'x', y = 'y1', ax = ax, label = 'y1', marker='.')
df.plot(x = 'x', y = 'y2', ax = ax, label = 'y2', marker='.')
当我尝试两个绘制第三个变量(y3
)和那些熊猫列时,会发生问题。 y3
计算出以下结果:
z = np.polyfit(df['x'].values, df['y2'].values, 3)
f = np.poly1d(z)
y3 = f(df['y2'].values)
我使用以下两种方法将其添加到之前的绘图中:
ax.plot(x = df['x'].values, y = y3, label = 'estimated', marker = '^')
这不会引发任何异常,但是我看不到添加到绘图中的新行,因此基本上会生成相同的绘图。我也尝试过:
plt.plot(x = df['x'].values, y = y3, label = 'estimated', marker = '^', ax = ax)
抛出:
TypeError: inner() got multiple values for keyword argument 'ax'
如何使用存储在y3
中的值(该数组是一个numpy数组)将第三条线添加到绘图中?
答案 0 :(得分:2)
对于前两个图,您使用DataFrame df
通过df.plot()
直接绘制列,其中x
和y
作为关键字( 参数(即,也可以不使用x=
和y=
的情况下使用)(official docs)。因此,对x=...
使用y=...
和df.plot()
。
但是,在您的第三个绘图命令中,您正在使用轴实例ax
来进行ax.plot()
的绘图,其中您只是将DataFrame值用作参数。 ax.plot()
接受x和y值作为ImportanceOfBeingErnest所阐明的 positioning 参数。
因此,要回答您的问题,您需要使用
ax.plot(df['x'].values, y3, label = 'estimated', marker = '^')
通过从绘图命令中删除x=
和y=
。
以同样的方式,跟随也可以
plt.plot(df['x'].values, y3, label = 'estimated', marker = '^')
其中plt
是指当前的轴对象。