Introducción a la Visualización de Datos con Python 4 - Trabajando con Matplotlib

힘센캥거루
2023년 11월 13일(수정됨)
7
python

Este artículo continúa después de Pandas. He adjuntado el artículo anterior para que lo tengas como referencia.

Cuando intentaba hacer visualización de datos con Python, la biblioteca más desafiante para empezar fue matplotlib.

Había mucho material, pero no tenía claro cómo empezar a aprenderla.

En este artículo, comenzaremos desde el uso realmente básico de Matplotlib y progresaremos hasta configuraciones de ejes detalladas de manera secuencial.

Introducción a la Visualización de Datos con Python 4 - Trabajando con Matplotlib-1

1. Llamar a Matplotlib y Configuración de Coreano

El gráfico a continuación visualiza los días de ola de calor por región que utilizamos en el artículo anterior.

Verás que todo el texto coreano aparece como cuadraditos □.

Esto se debe a que matplotlib no soporta fuentes coreanas.

Introducción a la Visualización de Datos con Python 4 - Trabajando con Matplotlib-2

Si deseas usar fuentes coreanas, copia y pega el siguiente código tal cual.

La fuente está configurada en Malgun Gothic, mi favorita.

# Módulos y configuración de fuente coreana
import matplotlib.pyplot as plt
import matplotlib

# Configuración de fuente en MacOS
# matplotlib.rcParams["font.family"] = "AppleGothic"

# Configuración de fuente en Windows
matplotlib.rcParams["font.family"] = "Malgun Gothic"

# Configuración del tamaño de fuente
matplotlib.rcParams["font.size"] = 13

# Solución para mostrar negativos correctamente
plt.rcParams['axes.unicode_minus'] = False

Como mencioné en el artículo anterior, no es necesario memorizar todo esto.

Con saber que 'hay una solución así' es suficiente.

Introducción a la Visualización de Datos con Python 4 - Trabajando con Matplotlib-3

Después de ejecutar este código, verás que el texto coreano se muestra correctamente en el gráfico.

Crearemos gráficos como el de abajo en próximas sesiones. 

Introducción a la Visualización de Datos con Python 4 - Trabajando con Matplotlib-4

2. Dibujar Gráfico de Línea (plot)

El gráfico más fácil de dibujar es el gráfico de línea.

Si puedes dibujar un gráfico de línea, podrá manejar otros tipos de gráficos fácilmente.

Enfoquemos en dibujar el gráfico primero, en vez de decorarlo.

1) Dibujar el Gráfico

Primero, dibujemos una función lineal en forma de y=x. He introducido valores x y valores y en una lista como se muestra abajo.

x = [1,2,3,4,5]
y = [1,2,3,4,5]

Luego, solo tienes que pasar esto como parámetros como se muestra a continuación.

plt.plot(x, y)

Esto mostrará el siguiente resultado.

Normalmente se utiliza plt.show() para mostrar el gráfico, pero en Jupyter Notebook puedes ver el resultado de inmediato.

Introducción a la Visualización de Datos con Python 4 - Trabajando con Matplotlib-5

Así he dibujado un gráfico utilizando valores x e y.

Si introduces los valores x e y en formato de lista en plt.plot(), el gráfico se dibuja automáticamente.

También se admite data frames

Sin embargo, hay muchas funciones por aprender, empecemos con algunas de ellas.

2) Configuración de Leyenda

Vamos a añadir otro conjunto de valores al gráfico.

Usa Alt + Shift + ↓(flecha) para duplicar los valores x e y escritos anteriormente.

Introducción a la Visualización de Datos con Python 4 - Trabajando con Matplotlib-6

Puedes cambiar cada campo a x1, y1, pero eso no es interesante.

Prueba el siguiente método para una entrada más sencilla.

x1 = x.copy()
x1.reverse()
y1 = y.copy()
plt.plot(x1,y1)
Introducción a la Visualización de Datos con Python 4 - Trabajando con Matplotlib-7

Cuando dibujas el gráfico así, verás dos líneas de diferentes colores.

Para hacerlo más claro, podemos configurar una leyenda.

Añade un parámetro llamado label dentro de cada plt.plot().

x = [1,2,3,4,5]
y = [1,2,3,4,5]
x1 = x.copy()
x1.reverse()
y1 = y.copy()
plt.plot(x,y,label="A")
plt.plot(x1,y1,label="B")
plt.legend()

Podrás ver que aparece una leyenda en el lado derecho.

La posición de la leyenda puede cambiar arbitrariamente, pero lo veremos después de aprender otras funciones.

Introducción a la Visualización de Datos con Python 4 - Trabajando con Matplotlib-8

3) Configuración del Título

Configurar el título es tan simple como introducir un string dentro de plt.title().

plt.title("Mi Gráfico Genial")

Esto mostrará el título en la parte superior del gráfico.

Introducción a la Visualización de Datos con Python 4 - Trabajando con Matplotlib-9

Puedes configurar el tamaño de fuente con el parámetro fontsize.

plt.title("Mi Gráfico Genial", fontsize=25)

Como se puede ver abajo, el tamaño del título en el gráfico es más grande.

Introducción a la Visualización de Datos con Python 4 - Trabajando con Matplotlib-10

4) Configuración de Nombre de Ejes

Esta vez, vamos a expresar lo que representan los ejes x y y, podemos introducir el siguiente código relativamente simple.

plt.xlabel("Configuración del nombre del eje x", fontsize=25)
plt.ylabel("Configuración del nombre del eje y", fontsize=25)

xlabel y ylabel también pueden recibir fontsize como parámetro al igual que title.

Si no lo introduces, usará el tamaño de fuente predeterminado.

Introducción a la Visualización de Datos con Python 4 - Trabajando con Matplotlib-11

5) Configuración del Intervalo de Ejes

El intervalo de eje de 0.5 es incómodo. Cambiemos el intervalo de los ejes.

plt.xticks(x)
plt.yticks(y)

Introduce los valores en formato de lista deseado dentro de xticks o yticks.

Ahora hemos usado los valores de 1 a 5, pero también se pueden usar valores menores.

Introducción a la Visualización de Datos con Python 4 - Trabajando con Matplotlib-12

También puedes cambiar los valores de los ejes.

Esta vez, configuraremos el intervalo del eje x a [1,3,5] y lo cambiaremos a la cadena ["a", "b", "c"].

# Configurar valores y rango del eje
# Cambiar el valor de y es yticks y se usa de la misma manera que xticks.

plt.xticks([1,3,5], ["a", "b", "c"])
plt.yticks(y)

Al ejecutar este código, verás que se han cambiado los valores del eje x.

El primer parámetro de xticks, yticks es el intervalo del eje a cambiar, y el segundo el valor deseado.

Introducción a la Visualización de Datos con Python 4 - Trabajando con Matplotlib-13

Intentemos también cambiar el eje y.

plt.xticks([1,3,5], ["a", "b", "c"])
plt.yticks(y,["Iron", "Bronce", "Plata", "Oro", "Platino"])

Verás que los valores se cambian correctamente.

Un punto a tener en cuenta es que la cantidad de intervalos del eje y de valores a cambiar debe ser igual.

Introducción a la Visualización de Datos con Python 4 - Trabajando con Matplotlib-14

6) Especificación del Estilo de Línea

También puedes cambiar el estilo de línea.

Introduce los parámetros color, marker, linestyle, etc. dentro de plt.plot().

plt.plot(x,y,
         label="A",
         marker = "^", # Marcador
         color="darkred", # Color de línea
         linestyle=":" # Estilo de línea
         )

Si cambias solo uno de los dos gráficos, se verá como sigue.

Introducción a la Visualización de Datos con Python 4 - Trabajando con Matplotlib-15

El método de introducción anterior es explícito, pero es difícil recordar todos los parámetros.

En ese caso, puedes introducirlo de forma sencilla como se muestra a continuación.

# Cambiar estilo de línea 1
plt.plot(x,y,
         label="A",
         marker = "^",
         color="darkred",
         linestyle=":")
         
# Cambiar estilo de línea 2 
plt.plot(x1,y1,"go:",label="B")

Introduce el color, marcador y estilo de línea en forma de str detrás de los valores x e y.

Esta forma es mucho más sencilla de expresar.

Introducción a la Visualización de Datos con Python 4 - Trabajando con Matplotlib-16

A continuación se presentan los tipos de colores, marcadores, estilos de línea soportados por matplotlib.

Elige lo que más te guste.

Introducción a la Visualización de Datos con Python 4 - Trabajando con Matplotlib-17Introducción a la Visualización de Datos con Python 4 - Trabajando con Matplotlib-18

3. Dibujando Diferentes Tipos de Gráficos

Ahora probemos a dibujar otros tipos de gráficos además de plot.

Lo que cambia son solo los parámetros, dar los valores x e y sigue siendo igual en cada caso. 

1) Gráfico de Barras (bar)

Primero elimina todos los parámetros excepto x, y y label de un gráfico.

Luego cambia plt.plot por plt.bar.

plt.bar(x,y,label="A")

Realmente es tan simple como cambiar la función plot por bar para obtener el gráfico.

Introducción a la Visualización de Datos con Python 4 - Trabajando con Matplotlib-19

Si las barras son demasiado densas, puedes agregar un valor de transparencia, usando alpha como parámetro en bar.

plt.bar(x,y,label="A",alpha=0.4)

Verás que las barras cambian al gráfico de barras con los valores existentes.

Introducción a la Visualización de Datos con Python 4 - Trabajando con Matplotlib-20

De manera similar a plot, puedes especificar el color y el ancho.

plt.bar(x,y,label="A",alpha=0.4,color="red")
plt.bar(x,y,label="C, width=0.4",alpha=0.4,width=0.4,color="yellow")
Introducción a la Visualización de Datos con Python 4 - Trabajando con Matplotlib-21

2) Gráfico de Barras Horizontales (barh)

Vamos a dibujar un gráfico horizontal.

Solo necesitas agregar una 'h' a plt.bar para cambiarlo a plt.barh.

plt.barh(x,y,label="A", alpha=0.4, color="red")

Puedes ver que el gráfico ha cambiado a uno horizontal.

Introducción a la Visualización de Datos con Python 4 - Trabajando con Matplotlib-22

Cambié el gráfico B también a uno horizontal y le di un valor alpha.

He restaurado los valores originales de x, y.

plt.barh(x,y,label="A",alpha=0.4,color="red")
plt.barh(x1,y1,label="B",alpha=0.4,color="green")
Introducción a la Visualización de Datos con Python 4 - Trabajando con Matplotlib-23

Si no te gusta el solapamiento, puedes intentar multiplicar el valor y de un gráfico por menos uno para extender los gráficos hacia la izquierda y derecha.

y1 = y.copy()
y1 = [-i for i in y1]
plt.barh(x,y,label="A",alpha=0.4,color="red")
plt.barh(x1,y1,label="B",alpha=0.4,color="green")

Así, obtienes un gráfico que recuerda al que vimos al analizar tasas de natalidad.

Introducción a la Visualización de Datos con Python 4 - Trabajando con Matplotlib-24

Si sabes usar numpy, también puedes usar numpy.array para invertir los valores de manera más sencilla.

El resultado es el mismo que antes.

y1 = y.copy()
y1 = np.array(y1)
plt.barh(x,y,label="A",alpha=0.4,color="red")
plt.barh(x1,-y1,label="B",alpha=0.4,color="green")

3) Gráfico de Dispersión (scatter)

Ahora vamos a dibujar un gráfico de dispersión. Necesitamos borrar el código barh de antes y escribir scatter en su lugar.

También restauramos los valores originales de B.

plt.scatter(x,y,label="A",alpha=0.4,color="red")
plt.barh(x1,y1,label="B",alpha=0.4,color="green")

El gráfico de dispersión simplemente marca las posiciones de los valores con puntos.

Es útil para observar la distribución de valores y sus correlaciones.

Introducción a la Visualización de Datos con Python 4 - Trabajando con Matplotlib-25

4) Histograma (hist)

Un histograma muestra la distribución de valores.

Ya que usamos valores iguales entre 1 y 5, solo verás una línea si graficamos un histograma.

Vamos a añadir valores aleatorios usando el función random.

He proporcionado un ejemplo con numpy también.

# Al usar function random
import random
y2 = [random.randint(0,101) for i in range(100)]
plt.hist(y2, alpha=0.4)

# Al usar numpy
import numpy as np
y3 = np.random.randint(0, 101, 100) # Introduzca (número de inicio, número de final, longitud) en orden
plt.hist(y3, alpha=0.4)

Verás como se muestran cuántos valores caen en cada rango.

Introducción a la Visualización de Datos con Python 4 - Trabajando con Matplotlib-26

Puedes especificar el rango y ancho del gráfico que deseas estimar.

Fijé el rango del histograma (bins) en 10 y el ancho del gráfico en 15.

import random
y2 = [random.randint(0,101) for i in range(100)]
plt.hist(y2,label="a",alpha=0.4)

import numpy as np
y3 = np.random.randint(0,101, 100)
plt.hist(y3,label="b, bins=5",alpha=0.4,bins=5,width=15)

plt.legend()
Introducción a la Visualización de Datos con Python 4 - Trabajando con Matplotlib-27

5) Gráfico de Cajas (boxplot)

Ahora, veamos el gráfico de cajas.

Parece complejo, pero muestra de arriba a abajo el valor máximo, el 25% superior, la mediana, el 25% inferior y el valor mínimo.

Probamos introducir y2, y3 en una única gráfica de cajas.

import random
y2 = [random.randint(0,101) for i in range(100)]

import numpy as np
y3 = np.random.randint(0,101, 100)

plt.boxplot([y2,y3], labels=["y2","y3"])

Introduciendo los valores deseados en una lista, se expresan juntos.

Y también puedes utilizar el parámetro labels en formato lista para describir los valores.

Introducción a la Visualización de Datos con Python 4 - Trabajando con Matplotlib-28

Es posible cambiar colores, pero requiere trabajar con objetos individuales, así que por ahora lo omitimos.

Es fácil encontrar más información si estás interesado.

Introducción a la Visualización de Datos con Python 4 - Trabajando con Matplotlib-29

6) Grafico de Violín (violinplot)

El gráfico de violín muestra la distribución de los datos en forma de bucles, diferente a los gráficos de caja.

import random
y2 = [random.randint(0,101) for i in range(100)]

import numpy as np
y3 = np.random.randint(0,101, 100)

plt.violinplot([y2,y3])

Los gráficos de violín ofrecen una visión más detallada de la distribución que los de caja.

Introducción a la Visualización de Datos con Python 4 - Trabajando con Matplotlib-30

Si deseas ver la mediana o las líneas del 25% superior e inferior, puedes añadir el siguiente código.

plt.violinplot([y2,y3], showmeans=True, quantiles=[[0.25,0.75],[0.25,0.75]])

showmeans muestra la mediana y quantiles especifica qué cuantiles se desean en decimal.

Queda más claro y detallado que con gráficos de caja.

Introducción a la Visualización de Datos con Python 4 - Trabajando con Matplotlib-31

No estoy satisfecho con el eje x del gráfico, así que lo ajusté como sigue.

plt.violinplot([y2,y3], showmeans=True, quantiles=[[0.25,0.75],[0.25,0.75]])
plt.xticks([1,2], ["y2","y3"])

Ahora se ve un poco mejor.

Introducción a la Visualización de Datos con Python 4 - Trabajando con Matplotlib-32

4. Conclusión

En este artículo, hemos explorado visualmente la visualización con Matplotlib.

De manera sencilla, puedes dibujar un gráfico simplemente dando valores x e y.

Configurar el eje, rotaciones, etc., son cosas secundarias. 

Tratar de aprender todo desde el principio obstaculiza el proceso de aprendizaje.

Recomiendo crear y diseñar uno por uno para ir aprendiéndolo gradualmente.

En el próximo artículo, intentaremos visualizar datos capturados con Pandas usando Matplotlib.

댓글을 불러오는 중...