python - Pandas:传递的轴数与要绘制的列数不匹配

标签 python pandas matplotlib

我想将 pandas 数据框的三列绘制到 2x2 子图布局:

rand=np.random.random((12,6))
df=pd.DataFrame(columns=['a','b','c','d','e','f'],data=rand)
ax=df.loc[:,'a':'c'].plot(subplots=True,layout=(2,2))

这给了我想要的结果(右下角有一个空图)。但是,如果我尝试使用

向所有这些子图添加另一列
df.loc[:,'d':'f'].plot(subplots=True,ax=ax)

发生以下错误:

ValueError: The number of passed axes must be 3, the same as the output plot

有没有办法解决这个问题,而无需重新安排子图的布局?

最佳答案

如果出现

ax=df.plot(subplots=True,layout=(2,2))

ax 是一个包含 4 个元素的 2x2 数组。这些是 4 个轴,如果 df 仅包含 3 列,则最后一个轴是不可见的。再次绘制 3 列时,您需要提供 3 个轴,而不是全部 4 个。一个选项是将 ax 数组索引到要使用的列数。

df2.plot(subplots=True,ax=ax.flatten()[:3])

完整示例:

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd

rand=np.random.random((12,6))
df=pd.DataFrame(columns=['a','b','c','d','e','f'],data=rand)

ax=df.loc[:,'a':'c'].plot(subplots=True,layout=(2,2))
df.loc[:,'d':'f'].plot(subplots=True,ax=ax.flatten()[:3])

plt.show()

关于python - Pandas:传递的轴数与要绘制的列数不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51534220/

相关文章:

python - 使用共享基本名称的 Python 包

python - Jupyter 笔记本 pandas_profiling : cannot import name 'to_html' from 'pandas_profiling.report'

python - 如何在格式化用户定义标题 XLSXWriter 和 Pandas 时删除索引列

Python 按字母顺序排列数据框

python - 如何使用列作为索引获取 pandas 数据框中某个位置的单元格

python - 根据 x 值的数量增加 matplotlib 中图形的宽度

javascript - Filtergraph描述中的流说明符 '' [0][1]concat=a=1 :n=1:v=1[s0] matches no streams

python - 在 python 中简单(但大)读/写时间序列数据

python - 关于Python动画的简单问题

python - 如何使图像变形使坐标变形