首页 > 解决方案 > 用 pandas 数据框制作多个饼图(每列一个)

问题描述

我的问题类似于从熊猫数据框中制作多个饼图(每行一个)。

但是,在我的情况下,我正在寻找每一列,而不是每一行。我可以为每一列制作饼图,但是,因为我有 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'])

然后我得到以下结果: 在此处输入图像描述 这正是我想要的。但无法读取饼图。如果它能产生更清晰的输出,那就更好了。

标签: pandaspie-chart

解决方案


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

df_sw = df.T

然后我可以使用示例中的代码: Making multiple pie charts out of a pandas dataframe (one for each row)


推荐阅读