用于在for循环中配置matplotlib子图

时间:2018-02-14 14:39:54

标签: python pandas matplotlib subplot

我正在尝试循环Pandas数据框中的一些数据并绘制到不同的子图中,但不太确定我的错误。

以下是代码:

df2 = pd.DataFrame(np.random.randint(0,100,size=(100, 4)), columns=list('ABCD'))
fig, axes = plt.subplots(nrows=4, ncols=1, sharex=True)
for i, col in enumerate(df2.columns):
    print(col)
    axes[i] = df2[col].plot(kind="box")

enter image description here

我如何填写其他子图?

2 个答案:

答案 0 :(得分:4)

有一种更简单的方法可以执行此操作,只需使用选项df.plot执行subplots=True,然后在那里更改离群值,垂直(layout=(4,1)):

df2.plot(kind='box',subplots=True, layout=(4,1), figsize=(8,8))
plt.show()

enter image description here

或者如果您希望水平分布的子图(layout=(1,4)):

df2.plot(kind='box',subplots=True, layout=(1,4),figsize=(15,8))
plt.show()

enter image description here

最后,您可以通过以下方式将所有箱图放在一起:

df2.plot(kind='box', figsize=(8,8))
plt.show()

enter image description here

有关如何使用pandas进行可视化的详细信息,请查看documentation

答案 1 :(得分:1)

您需要将轴作为参数传递给绘图函数。这些方面的东西:

df2 = pd.DataFrame(np.random.randint(0,100,size=(100, 4)), columns=list('ABCD'))
fig, axes = plt.subplots(nrows=4, ncols=1, sharex=True)
for i, col in enumerate(df2.columns):
    print(col)
    df2[col].plot(kind="box", ax=axes[i])

在您的示例中,您正在重新定义'axes'的元素。相反,您只需定义一次轴,然后告诉绘图功能将哪个轴用于绘图。