Pandas 从一个数据帧生成多个饼图(每列一个)

Pandas 从一个数据帧生成多个饼图(每列一个),pandas,pie-chart,Pandas,Pie Chart,我的问题类似于 然而,在我的案例中,我寻找的不是每一行,而是每一列。 我可以为每列制作饼图,但是,由于我有12列,饼图彼此太接近 我使用了以下代码: fig, axes = plt.subplots(4, 3, figsize=(10, 6)) for i, (idx, row) in enumerate(df.iterrows()): ax = axes[i // 3, i % 3] row = row[row.gt(row.sum() * .01)] ax.pie(

我的问题类似于

然而,在我的案例中,我寻找的不是每一行,而是每一列。 我可以为每列制作饼图,但是,由于我有12列,饼图彼此太接近

我使用了以下代码:

fig, axes = plt.subplots(4, 3, figsize=(10, 6))

for i, (idx, row) in enumerate(df.iterrows()):
    ax = axes[i // 3, i % 3]
    row = row[row.gt(row.sum() * .01)]
    ax.pie(row, labels=row.index, startangle=30)
    ax.set_title(idx)

fig.subplots_adjust(wspace=.2)
我有以下结果

但我想要的是在另一边。我需要12个饼图(因为我有12列),每个饼图应该有4个部分(腿、车、步行和自行车)

如果我写这个代码

fig, axes = plt.subplots(4,3)
for i, col in enumerate(df.columns):
    ax = axes[i // 3, i % 3]
    plt.plot(df[col])
然后我得到以下结果:

如果我使用:

plot = df.plot.pie(subplots=True, figsize=(17, 8),labels=['pt','car','walk','bike'])
然后我得到以下结果:
这正是我要找的。但不可能读取饼图。如果它能产生更清晰的输出,那就更好了。

在你的链接文章中,我会使用matplotlib.pyplot。公认的答案使用了
plt.子图(2,3)
,我建议您也这样做,创建两行,每行中有3个图。 像这样:

图,轴=plt.子批次(2,3)
对于i,枚举中的列(df.列):
ax=轴[i//3,i%3]
ax.绘图(df[col])

正如在您的链接帖子中一样,我将使用matplotlib.pyplot进行此操作。公认的答案使用了
plt.子图(2,3)
,我建议您也这样做,创建两行,每行中有3个图。 像这样:

图,轴=plt.子批次(2,3)
对于i,枚举中的列(df.列):
ax=轴[i//3,i%3]
ax.绘图(df[col])

最后,我明白了如果我交换行和列

df_sw = df.T
然后我可以使用示例中的代码:

最后,我明白了如果我交换行和列

df_sw = df.T
然后我可以使用示例中的代码:

我已经写了plt.子图(2,3),但它不起作用。在链接的帖子中,你需要访问每个子图的轴和图形。真的,这和你的链接帖子一样,被接受的答案调用每个
ax
,并在上面绘图。我理解你所说的,但我需要为每个culumn绘制饼图,而不是为行绘制饼图。当我使用示例代码时,我不能使用ItErrors或我没有row或idxI添加了结果的foto谢谢你的回复。我已经回答了我的问题。我已经写了plt.子图(2,3),但它不起作用。在你的链接文章中,你需要访问每个子图的轴和图形。真的,这和你的链接帖子一样,被接受的答案调用每个
ax
,并在上面绘图。我理解你所说的,但我需要为每个culumn绘制饼图,而不是为行绘制饼图。当我使用示例代码时,我不能使用ItErrors或我没有row或idxI添加了结果的foto谢谢你的回复。我已经把我的问题提出来了。