Show code cell source
import os
# Por precaución, cambiamos el directorio activo de Python a aquel que contenga este notebook
if "PAD-book" in os.listdir():
os.chdir(r"PAD-book/Laboratorio-Computacional-de-Analytics/S2 - Funciones, manejo de archivos y visualizacion/S2.TU3/")
Visualización básica#
Visualizar datos a través de mapas o gráficos permite identificar tendencias, patrones y valores atípicos. Usualmente utilizamos las visualizaciones para decidir cómo orientar nuestro análisis.
En este tutorial establecemos nociones fundamentales sobre el uso del paquete matplotlib
para visualizar datos.
Requisitos#
Para desarrollar este tutorial necesitarás:
Utilizar estructuras de datos y de control
Objetivos#
Al final de este tutorial podrás:
1. Realizar visualizaciones de datos utilizando la librería matplotlib
.
1. Librería matplotlib
#
matplotlib
es una librería de uso abierto para el lenguaje Python, que soporta visualizaciones estáticas, animadas e interactivas.
Te recomendamos importar el módulo matplotlib.pyplot
utilizando el nombre plt
(su alias más usado), como se muestra a continuación.
import matplotlib.pyplot as plt
1.1. Declarar una visualización#
Para declarar una visualización utilizamos el método subplots
del módulo matplotlib.pyplot
. Este nos permite crear un objeto de tipo figure
(fig
) para establecer el lienzo sobre el cual colocaremos un gráfico y un objeto de tipo axes
(ax
) que hace referencia a un gráfico.
fig, ax = plt.subplots()
Asimismo, podemos colocar más de un gráfico en un mismo lienzo. Para esto, ingresamos por parámetro el número de filas (n
) y el número de columnas (m
) en las que queremos dividir el lienzo.
fig, ax = plt.subplots(n,m)
A continuación, mostramos un ejemplo de la declaración de una visualización cuyo lienzo permite colocar dos gráficos, uno encima del otro:
fig, ax = plt.subplots(2,1) # Declaramos la visualización.
grafico1 = ax[0].plot( # Declaramos el gráfico 1.
[1,2,3,4], # Asginamos valores al eje x.
[1,4,8,10], # Asginamos valores al eje y.
color='blue' # Modificamos el color del gráfico.
)
grafico2 = ax[1].plot( # Declaramos el gráfico 2.
[1,2,3,4], # Asginamos valores al eje x.
[1,5,7,9], # Asginamos valores al eje y.
color='green' # Modificamos el color del gráfico.
)
plt.show() # Utilizamos el método show para mostrar la visualización.
1.2. Tipos de visualización#
La siguiente tabla asocia algunos de los métodos del objeto ax
con el respectivo tipo de visualización que genera.
|
Gráfico de dispersión |
|
Gráfico de línea |
|
Histogramas |
|
Gráfico de barras |
1.3. Métodos para editar los gráficos#
A continuación, presentamos los principales métodos para editar un objeto de tipo axes
.
|
Establece la escala del eje x |
|
Establece la escala del eje y |
|
Elimina los ejes del gráfico |
|
Establece límites para el rango del eje x |
|
Establece límites para el rango del eje y |
|
Establece cuales valores del eje x tendrán una etiqueta |
|
Establecemos cuales valores del eje y tendrán una etiqueta |
|
Establece los valores de las etiquetas de datos del eje x |
|
Establece los valores de las etiquetas de datos del eje y |
|
Agrega un título al gráfico |
|
Agrega una leyenda al gráfico |
|
Genera un segundo eje vertical a la derecha del gráfico |
|
Genera un segundo eje horizontal arriba del gráfico |
|
Agrega una grilla al gráfico cuando toma el valor |
1.4. Gráfico de barras#
Queremos comparar las ventas anuales (en USD) de dos productos durante los últimos 5 años. Para esto, crearemos un gráfico de barras.
fig, ax = plt.subplots() # Declaramos la visualización.
etiquetas = ['2016', '2017', '2018', '2019', '2020'] # Declaramos las etiquetas del eje x (años).
producto_a = [20000, 40000, 35000, 45000, 60000] # Declaramos los registros de las ventas del producto A.
producto_b = [55000, 40000, 20000, 22000, 17000] # Declaramos los registros de las ventas del producto B.
ancho = 0.35 # Definimos el ancho de las barras.
pos_bar_a = [i - ancho/2 for i in range(len(etiquetas))]# Ubicación de cada barra en A.
pos_bar_b = [i + ancho/2 for i in range(len(etiquetas))]# Ubicación de cada barra en B.
# Serie de datos correspondiente al producto A.
serie_a = ax.bar(pos_bar_a, # Definimos la ubicación de cada barra.
producto_a, # Asignamos los registros correspondientes a las barras.
ancho, # Asignamos el ancho de cada barra.
label = 'Producto A', # Definimos un nombre para la serie A.
color = 'lightsteelblue') # Modificamos el color de las barras.
# Serie de datos correspondiente al producto B.
serie_b = ax.bar(pos_bar_b, # Definimos la ubicación de cada barra.
producto_b, # Asignamos los registros del producto A a las barras.
ancho, # Asignamos el ancho de cada barra.
label = 'Producto B', # Definimos un nombre para la serie A.
color = 'navy') # Modificamos el color de las barras.
ax.set_xticks([*range(len(etiquetas))]) # Establecemos cuales valores del eje x tendrán una etiqueta.
ax.set_xticklabels(etiquetas) # Establecemos las etiquetas del eje x.
ax.legend() # Declaramos la leyenda de los datos.
plt.show() # Utilizamos el método show para mostrar la visualización.
1.5. Gráfico de Dispersión#
A continuación, crearemos un gráfico de dispersión.
fig, ax = plt.subplots() # Declaramos la visualización.
# Serie de datos 1.
serie_1 = ax.scatter(
[1,2,3,4], # Declaramos las coordenadas del eje x.
[1,4,8,10], # Declaramos las coordenadas del eje y.
color='blue', # Modificamos el color de los puntos.
label='Serie 1' # Definimos un nombre para la serie 1.
)
# Serie de datos 2.
serie_2 = ax.scatter(
[1,2,3,4], # Declaramos las coordenadas del eje x.
[1,5,7,9], # Declaramos las coordenadas del eje y.
color='green', # Modificamos el color de los puntos.
label='Serie 2' # Definimos un nombre para la serie 2.
)
ax.set_xscale('linear') # Establecemos una escala lineal para el eje x.
ax.set_yscale('linear') # Establecemos una escala lineal para el eje y.
ax.set_title('Gráfico de dispersión') # Definimos un título para la visualización.
ax.grid(True) # Agregamos una grilla al gráfico.
ax.legend() # Modificamos el color del gráfico.
plt.show() # Utilizamos el método show para mostrar la visualización.
Referencias#
Matplotlib (2020). Matplotlib: Python plotting. Recuperado el 11 de febrero de 2020 de: https://matplotlib.org/
Créditos#
Autores: Juan David Reyes Jaimes, Alejandro Mantilla Redondo, Diego Alejandro Cely Gómez
Fecha última actualización: 12/07/2022