Plot stacked bar chart from pandas data frame

前端 未结 2 583
礼貌的吻别
礼貌的吻别 2021-01-16 06:30

I have dataframe:

payout_df.head(10)

What would be the easiest, smartest and fastest way to replicate the following excel plot?

<
2条回答
  •  花落未央
    2021-01-16 07:28

    If you just want a stacked bar chart, then one way is to use a loop to plot each column in the dataframe and just keep track of the cumulative sum, which you then pass as the bottom argument of pyplot.bar

    import pandas as pd
    import matplotlib.pyplot as plt
    
    # If it's not already a datetime
    payout_df['payout'] = pd.to_datetime(payout_df.payout)
    
    cumval=0
    fig = plt.figure(figsize=(12,8))
    for col in payout_df.columns[~payout_df.columns.isin(['payout'])]:
        plt.bar(payout_df.payout, payout_df[col], bottom=cumval, label=col)
        cumval = cumval+payout_df[col]
    
    _ = plt.xticks(rotation=30)
    _ = plt.legend(fontsize=18)
    

提交回复
热议问题