熊猫:传递的轴数与要绘制的列数不匹配

时间:2018-07-26 08:22:42

标签: python pandas matplotlib

我想将熊猫数据框的三列绘制为2x2子图布局:

Trx

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

向所有这些子图中添加另一列
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)

有没有解决此问题的方法,而不必重新排列子图的布局?

1 个答案:

答案 0 :(得分:1)

如果是

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()