¿Cómo separar grupos de barras apiladas en pandas?
Mi entrada es este marco de datos:
df = pd.DataFrame(
{
'ID': ['ID001', 'ID002', 'ID003'],
'RUNNING': [5, 6, 3],
'QUEUE': [1, 2, 5],
'FINISHED': [6, 2, 4],
'PROCESSED': [2, 6, 4],
}
)
ID RUNNING QUEUE FINISHED PROCESSED
0 ID001 5 1 6 2
1 ID002 6 2 2 6
2 ID003 3 5 4 4
Estoy intentando crear grupos de barras apiladas que separen las tareas en ejecución y finalizadas para cada identificación.
Hice el siguiente código pero hay tres problemas:
- las marcas x no muestran el nombre de los identificadores
- no hay espacio entre cada par de barras apiladas.
- el gráfico está truncado por la izquierda
running = df[['RUNNING', 'QUEUE']]
finished = df[['FINISHED', 'PROCESSED']]
fig, ax = plt.subplots(figsize=(7, 3))
running.plot(
kind='bar',
stacked=True,
ax=ax,
use_index=True,
color={'RUNNING': 'orange', 'QUEUE': 'yellow'},
edgecolor='black',
position=1,
)
finished.plot(
kind='bar',
stacked=True,
ax=ax,
use_index=True,
color={'FINISHED': 'green', 'PROCESSED': 'blue'},
edgecolor='black',
position=0,
)
fig.tight_layout()
plt.show()
Espero 3 grupos (un grupo para cada identificación) y cada grupo tendrá dos barras apiladas.
¿Pueden mostrarme cómo arreglar mi código?
Aceptado
Sólo necesitas modificar los anchos de las barras. Son demasiado anchos y se superponen entre sí:
# `color` param doesn't wok for me, maybe I have an older version of mpl
ax = df[['RUNNING','QUEUE']].plot.bar(position=1,stacked=True, width=0.3, hatch='/')
df[['FINISHED','PROCESSED']].plot.bar(position=0,stacked=True, ax=ax, width=0.3)
Producción: