【问题标题】:How to select which data is plotted on a bar chart from a 'groupby' object in pandas如何从 Pandas 中的“groupby”对象中选择在条形图上绘制哪些数据
【发布时间】:2019-08-21 16:02:48
【问题描述】:

我有一个使用来自 Python Pandas 的groupby创建的表,称为“LikelihoodAwareness”。该表如下所示:

Q7                       No        Yes

AwarenessImprovement

Decrease               1.492537   0.000000

Increase              12.686567  64.925373

No change              4.477612  16.417910

我想制作一个条形图,其中 y 轴上的百分比(数字)和 x 轴上的“是”“否”。我希望该图是一个堆叠条形图,其中“增加”、“减少”和“无变化”由“否”、“是”列上的不同颜色表示。我还想添加一个图例,描述哪种颜色是“增加”、“减少”、“无变化”。

我用过

LikelihoodAwareness.plot(kind='bar', stacked=True)

但这会在 x 轴上绘制“增加”、“减少”和“无变化”,在图例上绘制“是”、“否”。

如何使条形图将 x 上的“是”、“否”列以及“增加”、“减少”和“无变化”的百分比绘制为堆积条形图

【问题讨论】:

    标签: python pandas matplotlib


    【解决方案1】:

    您必须从 groupby 创建一个看起来像您显示的表格的 DataFrame,然后应用于 转置 DataFrame。

    我已经创建了一个像您的表格一样的 DataFrame 来绘制图形。

    import pandas as pd
    import numpy as np
    import matplotlib.pyplot as plt
    %matplotlib inline
    df = pd.DataFrame()
    df['No']=[1.492537,12.686567,4.477612]
    df['Si']=[0,64.925373,16.417910]
    ax=df.T.plot(kind='bar', stacked=True,figsize=(15,15),fontsize=20)
    df['index']=['Decrease','Increase','Nochange']
    df.set_index('index')
    ax.legend(df['index'],fontsize=20)
    

    输出:

    【讨论】:

    • 谢谢!我花了很长时间试图弄清楚这一点!
    • 不客气!我已经用图例更新了这个数字。
    猜你喜欢
    • 2014-09-23
    • 2021-05-04
    • 1970-01-01
    • 2014-06-02
    • 2018-07-23
    • 2018-09-28
    • 2020-12-13
    • 1970-01-01
    相关资源
    最近更新 更多