Trazar el gráfico de barras astackdas desde el dataframe pandas

Tengo dataframe:

payout_df.head(10)

introduzca la descripción de la imagen aquí

¿Cuál sería la forma más fácil, inteligente y rápida de replicar el siguiente gráfico de Excel?

introduzca la descripción de la imagen aquí

He intentado diferentes enfoques, pero no pude poner todo en su lugar.

Gracias

Si solo desea un gráfico de barras astackdas, una forma es usar un bucle para trazar cada columna en el dataframe y simplemente hacer un seguimiento de la sum acumulada, que luego pasa como el argumento bottom de pyplot.bar

 import pandas as pd import matplotlib.pyplot as plot # 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) 

introduzca la descripción de la imagen aquí

Además de la falta de datos, creo que el siguiente código producirá el gráfico deseado

 import pandas as pd import matplotlib.pyplot as plt df.payout = pd.to_datetime(df.payout) grouped = df.groupby(pd.Grouper(key='payout', freq='M')).sum() grouped.plot(x=grouped.index.year, kind='bar', stacked=True) plt.show() 

No sé cómo reproducir este elegante estilo de eje x. Además, su columna de payout debe ser datetime, de lo contrario pd.Grouper no funcionará ( frecuencias disponibles ).