绘制一个数组以及多个熊猫列

时间:2018-12-18 15:53:25

标签: python pandas numpy matplotlib

我有一个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数组)将第三条线添加到绘图中?

1 个答案:

答案 0 :(得分:2)

对于前两个图,您使用DataFrame df通过df.plot()直接绘制列,其中xy作为关键字( 参数(即,也可以不使用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是指当前的轴对象。