使用matplotlib子图绘制pandas groupby输出

时间:2018-01-18 16:59:59

标签: python pandas matplotlib plot group-by

我有一个数据帧,df2有6行和1591列

    android.applicationVariants.all { variant ->
    variant.outputs.all {

        def SEP = "_"
        def flavor = variant.productFlavors[0].name
        def buildType = variant.variantData.variantConfiguration.buildType.name
        def version = variant.versionName
        def versionCode = variant.versionCode
        def date = new Date();
        def formattedDate = date.format('ddMMyy_HHmm')

        outputFileName = "${flavor}${SEP}${buildType}${SEP}${version}${SEP}${versionCode}${SEP}${formattedDate}.apk"
    }
    }

我想在图中的每个面板中绘制多个3列作为堆叠条。列:0.0.0到1.5.12将绘制在单独的面板和列中:3.7.8到1.7.8在另一个面板中。这是代码:

           0.0.0   10.1.21  1.5.12   3.7.8  3.5.8  1.7.8 ...        
 June       1        1         4      0       0     4
 July       0        0         0      0       0     0
 August     54       0         9      0       5     0
 September  22       0         6      0       0     1
 October    0        9         5      1       4     0

但我得到:IndexingError:索引器太多

1 个答案:

答案 0 :(得分:2)

初始化子图 -

fig, axs = plt.subplots(len(df.columns) // 3, 1, sharex=True) 

接下来,沿第一个轴执行groupby,但不要进行绘图。

gs = df.groupby(np.arange(len(df.columns)) // 3, axis=1)

最后,zip向上移动轴和groupby输出,并一次绘制每个输出。

for (_, g), ax in zip(gs, axs):
     g.plot.bar(stacked=True, ax=ax)

plt.show()

enter image description here