python - 绘制一个数组以及多个 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 数组?
解决方案
对于前两个图,您使用 DataFramedf
直接绘制列,使用df.plot()
wherex
和y
作为关键字(可选)参数(即,不使用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
指的是当前轴对象。
推荐阅读
- javascript - 更改悬停时的图像会更改整行的图像
- node.js - 在最后一行之前添加值行并保留最后一行格式
- go - How to index entire GOPATH for existing project in Goland?
- javascript - amCharts 不显示 json 数据
- http - Indy 10 HTTPS 代理
- sql - PIVOT 多列不考虑聚合结果
- command-line - 由于权限更改导致的总线错误(核心转储)
- c# - 使用 { get; 将 .json 反序列化为 C# 放; } (牛顿软件)
- angular - 从 Angular 2 迁移到 Angular 4 后,模块“AppModule”导入错误意外值“t”。请添加@NgModule 注释
- mysql - 可以使用普通的 MySql jdbc 驱动程序写入 Mariadb。那为什么要使用单独的 MaraDB 驱动程序呢?