首页 > 解决方案 > 绘制一个数组以及多个 pandas 列

问题描述

我有一个 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) 与那些 pandas 列一起绘制时,就会出现问题。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 数组?

标签: pythonpandasnumpymatplotlib

解决方案


对于前两个图,您使用 DataFramedf直接绘制列,使用df.plot()wherexy作为关键字(可选)参数(即,不使用x=andy=也可以)(官方文档)。所以使用x=...y=...适用于df.plot().

但是,在您的第三个绘图命令中,您使用轴实例ax进行绘图,使用ax.plot()您仅使用 DataFrame 值作为参数的位置。ax.plot()接受 x 和 y 值作为ImportanceOfBeingErnest阐明的位置参数。

所以要回答你的问题,你需要使用

ax.plot(df['x'].values, y3, label = 'estimated', marker = '^')

通过从您的绘图命令中删除x=和。y=

同样的方式,跟随也可以

plt.plot(df['x'].values, y3, label = 'estimated', marker = '^')

其中plt指的是当前轴对象。


推荐阅读