【问题标题】:python stacked bar chart using categorical data使用分类数据的python堆积条形图
【发布时间】:2018-04-29 01:01:19
【问题描述】:

我有一个看起来像这样的 Pandas 数据框(1800 obs):

      A      B      C      D
 1   CL0    CL1    CL2    CL0
 2   CL2    CL1    CL1    CL3
 3   CL3    CL2    CL0    CL1
 .   ...    ...    ...    ...
 .   ...    ...    ...    ...
 n   CL2    CL1    CL0    CL3

我想创建一个堆积条形图,它在 x 轴上有“A”、“B”、“C”、“D”列,在 y 轴上有该特征中每个级别的百分比。如下图所示。

我猜我需要以某种方式将数据制成表格?但我不知道该怎么做。

【问题讨论】:

    标签: python pandas matplotlib


    【解决方案1】:
    print(df)
    

    输出:

         A    B    C    D
    1  CL0  CL1  CL2  CL0
    2  CL2  CL1  CL1  CL3
    3  CL3  CL2  CL0  CL1
    

    使用.apply()

    counts = df.apply(lambda x: x.value_counts() / len(x)).transpose()
    fig = plt.figure()
    ax = fig.add_subplot(111)
    counts.plot(ax=ax,kind='bar', stacked=True, rot=0)
    vals = ax.get_yticks()
    ax.set_yticklabels(['{:3.2f}%'.format(x*100) for x in vals])
    ax.yaxis.grid(True)
    ax.set_axisbelow(True)
    plt.show()
    

    输出:

    【讨论】:

    • 我怎样才能得到一个正常的条形图(没有与此代码堆叠)?如果我只是设置stacked=False 我在数据框的一列的条之间有间隙,并且 x 轴上的标签不居中。有什么建议吗?
    • 如果我通过colormap,如何确保在子图中对同一类别使用相同的颜色?提前致谢?
    猜你喜欢
    • 1970-01-01
    • 2011-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-09
    • 2021-09-12
    • 1970-01-01
    相关资源
    最近更新 更多