import pandas as pd
import matplotlib.pyplot as plt
tiendas = ['A', 'B', 'C', 'D']
ventas_2022 = {'Ene': [100, 80, 150, 50],
'Feb': [120, 90, 170, 60],
'Mar': [150, 100, 200, 80],
'Abr': [180, 110, 230, 90],
'May': [220, 190, 350, 200],
'Jun': [230, 150, 280, 120],
'Jul': [250, 170, 300, 140],
'Ago': [260, 180, 310, 150],
'Sep': [240, 160, 290, 130],
'Oct': [220, 140, 270, 110],
'Nov': [400, 220, 350, 190],
'Dec': [300, 350, 400, 250]}
df_ventas = pd.DataFrame(ventas_2022, index=tiendas)
df_ventas.head()
# Usamos las filas del DataFrame directamente, ya que las columnas representan los meses del año.
meses = df_ventas.columns.tolist()
# Creamos una figura con 2 filas y 2 columnas de subgráficos (total: 4 gráficos)
fig, axs = plt.subplots(2, 2, figsize=(10, 6))
# Título general del conjunto de gráficos (subplots)
# El parámetro y=1.02 eleva el título un poco sobre los subgráficos
fig.suptitle('Ventas anuales en 4 tiendas', y=1.02)
# Ajustamos el espacio entre subgráficos
# hspace → espacio vertical entre filas
# wspace → espacio horizontal entre columnas
fig.subplots_adjust(hspace=0.5, wspace=0.3)
# Primer gráfico: posición [0,0] → A
axs[0, 0].plot(df_ventas.loc['A', meses], color= '#cd5a0f')
axs[0, 0].set_title('Tienda A')
# Segundo gráfico: posición [0,1] → B
axs[0, 1].plot(df_ventas.loc['B', meses], color = '#a8bb09' )
axs[0, 1].set_title('Tienda B')
# Tercer gráfico: posición [1,0] → C
axs[1, 0].plot(df_ventas.loc['C', meses], color ='#1295bf')
axs[1, 0].set_title('Tienda c')
# Cuarto gráfico: posición [1,1] → D
axs[1, 1].plot(df_ventas.loc['D', meses], color ='#cd0fb3')
axs[1, 1].set_title('Tienda D')
# Establecemos el límite inferior y superior del eje y para todos los gráficos
ymin = 0 # Límite inferior del eje y
ymax = 450 # Límite superior del eje y
# Aplicamos los límites del eje y a cada uno de los subgráficos
for ax in axs.ravel():
ax.set_ylim(ymin, ymax) # Establece el rango del eje y desde 0 hasta 7000
# Configuramos cada subgráfico por separado usando un bucle
for ax in axs.flat:
# Establecemos una separación de 100 entre cada marca del eje y
ax.yaxis.set_major_locator(plt.MultipleLocator(100))
# Etiqueta del eje x
ax.set_xlabel('Meses')
# Etiqueta del eje y
ax.set_ylabel('Ventas')
# Mostramos líneas de referencia con un estilo de línea punteada
ax.grid(linestyle='--')
# Mostramos todos los gráficos
plt.show()