Gráficos de barras apilados con Matplotlib de Python

Nov 17, 2021
admin

Como era de esperar, el gráfico es difícil de leer. Probemos el gráfico de barras apiladas y añadamos algunos ajustes.

Primero, podemos ordenar los valores antes de trazarlos, lo que nos dará un mejor sentido del orden y facilitará la comparación de las barras. Lo haremos con la columna ‘Ventas globales’ ya que tiene el total.

## sort values
df_grouped = df_grouped.sort_values('Global_Sales')
df_grouped

Algunos de los registros del marco de datos – Imagen del autor

Antes, para construir un gráfico de barras agrupadas, utilizamos un gráfico para cada región en el que el parámetro de anchura y los ajustes en el eje x nos ayudaron a ajustar las cuatro áreas de cada plataforma.

De forma similar, para construir gráficos de barras agrupadas, utilizaremos un gráfico para cada región. Esta vez utilizaremos el parámetro inferior/izquierdo para indicar a Matplotlib lo que precede a las barras que estamos dibujando.

plt.bar(, )
plt.bar(, , bottom = )
plt.show()plt.barh(, )
plt.barh(, , left = )
plt.show()

Gráficos de barras apiladas (verticales/horizontales) – Imagen del autor

Cool. Podemos utilizar un bucle para trazar las barras, pasando una lista de ceros para el parámetro ‘bottom’ en el primer conjunto y acumulando los siguientes valores para las siguientes regiones.

fields = 
colors =
labels = # figure and axis
fig, ax = plt.subplots(1, figsize=(12, 10))# plot bars
left = len(df_grouped) *
for idx, name in enumerate(fields):
plt.barh(df_grouped.index, df_grouped, left = left, color=colors)
left = left + df_grouped# title, legend, labels
plt.title('Video Game Sales By Platform and Region\n', loc='left')
plt.legend(labels, bbox_to_anchor=(), ncol=4, frameon=False)
plt.xlabel('Millions of copies of all games')# remove spines
ax.spines.set_visible(False)
ax.spines.set_visible(False)
ax.spines.set_visible(False)
ax.spines.set_visible(False)# adjust limits and draw grid lines
plt.ylim(-0.5, ax.get_yticks() + 0.5)
ax.set_axisbelow(True)
ax.xaxis.grid(color='gray', linestyle='dashed')plt.show()

Gráfico de barras apiladas – Imagen del autor

Grandioso, esto es mucho más legible que el anterior.

Es importante recordar el propósito de este gráfico antes de intentar extraer cualquier idea. La idea es comparar las ventas totales de las plataformas y entender la composición de cada una de ellas.

Comparar los totales entre campos y comparar las regiones dentro de una barra está bien. En cambio, comparar regiones de diferentes barras puede ser muy engañoso.

En este caso, podemos comparar la región de NA en todas las barras, ya que tiene el mismo punto de partida en todas ellas, pero no es tan fácil comparar las demás. Por ejemplo, la X360 tiene un valor más bajo para JP que la PS2, pero es difícil comparar si el valor de Otros es mayor o menor que el de la Wii.

Valor comparable – Imagen del autor

Valor no comparable – Imagen del autor

Supongamos que cambiamos el orden de la pila, con Otras Ventas como la primera barra, y ordenamos los registros por Otras Ventas. Debería ser más fácil saber cuál es la más significativa.

## sort values
df_grouped = df_grouped.sort_values('Other_Sales')fields =
colors =
labels =

Gráfico de barras apiladas, destacando la categoría Otros – Imagen del autor

Hay dos elementos esenciales en esta visualización, el orden de las categorías en la pila de barras y el orden de las filas.

Si queremos destacar una región, podemos ordenar los registros con el campo elegido y utilizarlo como la barra más a la izquierda.

Si no, podemos ordenar los registros por el total y ordenar las pilas con las categorías que tienen valores más altos primero.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.