En este blog veremos como gráficar los diferentes tipos de gráficos con Matplotlib con codigo en python super sencillo de entender

Este es mi post de continuación de generación de gráficos (que puedes leer aquí) En este blog veremos como gráficas los diferentes tipos de gráficos que podemos hacer con Matplotlib. 

¿Cómo está organizado este blog?

  1. Tipo de gráfico
  2. Definición 
  3. Ejemplo en código
  4. Graficación 

Lo que vamos a ver:

  1. Gráfico Lineal
  2. Gráficos de líneas verticales
  3. Gráfico de series combinadas
  4. Gráfico de pastel
  5. Gráfico de caja y bigotes
  6. Histograma 
  7. Histograma Gaussiano
  8. Gráfica de barras
  9. Gráfica de barras horizontales 
  10. Gráfico de escaleras
  11. Gráfica de Violín

Gráfico lineal (plot)

Es el que ya vimos durante todo un blog (Verlo aquí)

x = np.arange(1, 11)
y = np.random.randint(10, size=10)
plt.plot(x, y)
plt.show()

Gráfico de líneas verticales (stem)

Este gráfico es muy útil para ilustrar valores positivos y negativos.

plt.stem(x, y)
plt.show()

Gráfico de series comparadas (fill_between)

Con éste podemos rellenar el espacio que hay entre dos series en el eje Y, pero hay que dibujarlas de más excluyente a menos para que no solapen los colores.

for t in range(1, 11)[::-1]:
plt.fill_between(
range(1, 11),
[t * n for n in range(1, 11)],
label=f"Tabla del {t}"
)
plt.title("Tablas de multiplicar")
plt.legend(loc='upper left')
plt.show()

Gráfico circular o de pastel (pie)

El gráfico de “quesitos” como yo lo llamo es muy útil para representar porcentajes

turistas = [86.9, 81.8, 75.9, 60.7, 58.2, 39.3, 37.7, 37.6, 37.5, 35.4]
paises = ['Francia', 'España', 'EEUU', 'China', 'Italia',
'México', 'Reino Unido', 'Turquía', 'Alemania', 'Tailandia']
explode = [0, 0.2, 0, 0, 0, 0.4, 0, 0, 0, 0]  # Destacar algunos
plt.pie(turistas, labels=paises, explode=explode,
autopct='%1.1f%%', shadow=True, startangle=90)
plt.title('TOP 10 DESTINOS TURÍSTICOS EN 2017')
plt.show()

Gráfico de cajas y bigotes (boxplot)

Este tipo nos permite hacernos una idea de valores medios gracias a las cajas, mientras por otro lado los bigotes nos indican valores limitantes.

En Khan Academy hay una explicación perfecta para aprender a generar e interpretar este tipo de gráfico

jap = np.random.uniform(166, 176, 100)
ale = np.random.uniform(175, 185, 100)
arg = np.random.uniform(170, 180, 100)
# Cambio los colores para que se vea bien en VSC con tema oscura
plt.boxplot([jap, ale, arg],
notch=True, patch_artist=True,
capprops=dict(color="green"),
medianprops=dict(color="orange"),
whiskerprops=dict(color="yellow"))
plt.xticks([1, 2, 3], ['Japón', 'Alemania', 'Argentina'])
plt.ylabel('Estaturas (cm)')
plt.show()

Gráfico histograma (hist)

Los histogramas sirven para hacernos una idea de la frecuencia de distribución de valores en un rango determinado.

alturas = np.random.uniform(170, 180, 1000)
# El rango se define con bins, debe ser menor que el número de muestras
plt.hist(alturas, bins=10, edgecolor='black')
plt.title("Distribución de 1000 alturas")
plt.xlabel("Altura media (cm)")
plt.ylabel("Muestras")
plt.show()

Histograma gaussiano

Otro ejemplo con distribución gaussiana a partir de un vector normal con numpy que tiende a dibujar una campana con su máximo justo en medio

numeros = np.random.normal(size=1000)
plt.hist(numeros, bins=10, edgecolor='black')
plt.title("Histograma Gaussiano")
plt.xlabel("Valor")
plt.ylabel("Frecuencia")
plt.show()

Gráfico de barras (bar)

Este es el clásico gráfico donde las barras nos indican cantidades en el eje Y para los valores en el eje X.

fechas = ['19/08/2019', '20/08/2019', '21/08/2019', '22/08/2019', '23/08/2019']
primas = [79, 80, 79, 80, 82]
plt.bar(range(5), primas, edgecolor='black')
plt.xticks(range(5), fechas, rotation=60)
plt.title("PRIMA DE RIESGO EN ESPAÑA")
plt.ylim(min(primas)-1, max(primas)+1)
plt.show()

Gráfico de barras horizontales (barh)

Es una variante del anterior con las columnas dispuestas horizontalmente, por lo que cambian los ejes de las etiquetas y límites

fechas = ['19/08/2019', '20/08/2019', '21/08/2019', '22/08/2019', '23/08/2019']
primas = [79, 80, 79, 80, 82]
plt.barh(range(5), primas, edgecolor='black')
plt.yticks(range(5), fechas, rotation=60)
plt.title("PRIMA DE RIESGO EN ESPAÑA")
plt.xlim(min(primas)-1, max(primas)+1)
plt.show()

Gráfico de escaleras (step)

Otro gráfico muy simple que nos muestra las variaciones de forma continuada dibujando una escalera

x = np.arange(1, 11) y = np.random.randint(10, size=10)  plt.step(x, y) plt.show()

Gráfica de Violín

ax = plt.violinplot(x="day", y="total_bill", data=tips)

Matplotlib cuenta con un gran galería de gráficos que puedes revisar en su documentación oficial aquí

Y no olvides

Suscribete en mi canal de Youtube

Apoyame para seguir creando contenido y accede a mentorías personalizadas aquí

Gracias por leerme 💜

5 comments on “Tipos de gráficos en Python con Matplotlib

  1. Wonderful goods from you, man. I have understand your stuff previous to and you are just too magnificent. I really like what you have obtained here, certainly like what you are stating and the way by which you say it. You make it entertaining and you still take care of to stay it sensible. I can’t wait to read far more from you. This is really a wonderful website.

  2. Hola,
    Esto de ninguna manera es una crítica a tu artículo, más bien si me permites preguntar es que yo he estado buscando cómo hacer gráficas con python porque me resulta más fácil de encarar un proyecto con python que es un lenguaje que no conozco (pero sí programo) a intentar con c# pero por ejemplo en c# hay un componente que se llama livecharts y a la vista son muy agradables, son dinámicos, etc. y me llama la atención que sé que python tiene un montón de librerías, etc. pero no encontrar algo vistoso, agradable visualmente, etc. Tal vez al no conocer el lenguaje no estoy buscando correctamente, podrías por favor darme tu opinión de esto que planteo y sin con suerte mostrarme algo agradable visualmente con python y gráficas.

    Un saludo,
    Javier

    1. Hola Javier. Primero gracias por pasarte por este blog y comentar. Y segundo, conozco algunas librerías y herramientas, te las nombro por aquí: pygal, seaborn ( es de las más fáciles de manejar y con gráficas bonitas), Plotly (hace gráficas lindas y la puedes programar para que sea dinámica como un livechatr) o mpld3 también tiene una función similar. Si las usas me cuentas, un Saludo!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *