2022-09-27T22:26:51.030457 image/svg+xml Matplotlib v3.6.0, https://matplotlib.org/

Matplotlib

Tutorial Matplotlib: Gráficos bivariantes

Descubre cómo usar Matplotlib para crear gráficas bivariantes. Aprende a identificar relaciones y correlaciones entre variables a través de visualizaciones avanzadas.

Aprende Matplotlib GRATIS y certifícate

¿Qué son las gráficas bivariantes?

Las gráficas bivariantes son representaciones visuales que permiten analizar la relación entre dos variables diferentes

En el contexto de análisis de datos, estas gráficas son fundamentales para identificar patrones, correlaciones y tendencias entre los conjuntos de datos. Utilizando Matplotlib, se pueden crear diversos tipos de gráficas bivariantes que facilitan la comprensión de las interacciones entre variables.

En términos técnicos, las gráficas bivariantes se utilizan para visualizar cómo una variable responde a cambios en otra. Estas gráficas son esenciales para el análisis exploratorio de datos (EDA, por sus siglas en inglés) y pueden ayudar a los ingenieros de software a desarrollar modelos predictivos más precisos. Las representaciones visuales típicas incluyen gráficos de dispersión, gráficos de línea, diagramas de calor, entre otros.

Un aspecto clave de las gráficas bivariantes es que permiten identificar rápidamente la correlación entre variables. La correlación puede ser positiva, negativa o nula, y las gráficas bivariantes ayudan a visualizar estos tipos de relaciones. Por ejemplo, en un gráfico de dispersión, una correlación positiva se manifestará como una tendencia ascendente, mientras que una correlación negativa se verá como una tendencia descendente.

Para crear una gráfica bivariante básica con Matplotlib, es importante entender cómo utilizar las funciones fundamentales de esta biblioteca. 

A continuación se presenta un ejemplo de cómo crear un gráfico de dispersión, que es una forma común de gráfica bivariante:

import matplotlib.pyplot as plt

# Datos de ejemplo
x = [1, 2, 3, 4, 5]
y = [2, 3, 5, 7, 11]

# Crear un gráfico de dispersión
plt.scatter(x, y, color='blue')
plt.title('Gráfico de dispersión de ejemplo')
plt.xlabel('Variable X')
plt.ylabel('Variable Y')
plt.show()

La visualización resultante es la siguiente:

En el ejemplo anterior, se utiliza la función scatter de Matplotlib para crear un gráfico de dispersión. Los puntos del gráfico representan la relación entre las dos variables x e y. El uso de colores y etiquetas mejora la legibilidad y la interpretación de los datos.

Gráficas de dispersión (Scatter Plots)

Las gráficas de dispersión son una herramienta fundamental para visualizar la relación entre dos variables continuas

En Matplotlib, la función scatter permite crear estos gráficos de manera eficiente. Cada punto del gráfico representa una observación con coordenadas en el eje x e y, facilitando la identificación de patrones y correlaciones.

Para crear una gráfica de dispersión en Matplotlib, es esencial importar pyplot y utilizar la función scatter

A continuación, se muestra un ejemplo básico:

import matplotlib.pyplot as plt

# Datos de ejemplo
x = [10, 20, 30, 40, 50]
y = [15, 25, 35, 45, 55]

# Crear un gráfico de dispersión
plt.scatter(x, y, c='green', marker='o')
plt.title('Gráfico de dispersión básico')
plt.xlabel('Variable X')
plt.ylabel('Variable Y')
plt.grid(True)
plt.show()

A continuación, se muestra la gráfica resultante:

En este ejemplo, los puntos se dibujan utilizando círculos verdes. Es posible personalizar el color y la forma de los marcadores mediante los parámetros c y marker. La opción grid añade una cuadrícula al gráfico, mejorando su legibilidad.

Para enriquecer la visualización, se pueden añadir dimensiones adicionales utilizando el tamaño de los marcadores (s) y la paleta de colores (c). Esto se puede hacer de la siguiente manera:

import matplotlib.pyplot as plt
import numpy as np

# Crear un generador de números aleatorios con una semilla específica
rng = np.random.default_rng(seed=42)

# Generar datos de ejemplo
x = rng.random(50)
y = rng.random(50)
tamaño = rng.random(50) * 1000
colores = rng.random(50)

# Crear un gráfico de dispersión con tamaño y color
plt.scatter(x, y, s=tamaño, c=colores, alpha=0.5, cmap='viridis')
plt.colorbar()  # Añadir barra de color
plt.title('Gráfico de dispersión con tamaño y color')
plt.xlabel('Variable X')
plt.ylabel('Variable Y')
plt.show()

Este sería el aspecto de la gráfica:

En este caso, los tamaños y colores de los puntos varían, proporcionando información adicional sobre las observaciones. El parámetro alpha ajusta la transparencia, útil para manejar la superposición de puntos. La función colorbar añade una leyenda para interpretar los colores.

Las gráficas de dispersión son especialmente útiles para detectar correlaciones. Una tendencia lineal clara puede indicar una relación directa entre las variables. Sin embargo, es importante recordar que la correlación no implica causalidad. En Matplotlib, se pueden combinar con líneas de regresión para explorar estas relaciones de manera más profunda.

Para añadir una línea de regresión, se puede utilizar numpy para calcular los coeficientes de la línea y plot para dibujarla:

# Datos de ejemplo
x = np.array([1, 2, 3, 4, 5])
y = np.array([2, 4, 5, 4, 5])

# Calcular coeficientes de la línea de regresión
m, b = np.polyfit(x, y, 1)

# Crear gráfico de dispersión
plt.scatter(x, y, color='red')
plt.plot(x, m*x + b, color='blue')  # Añadir línea de regresión
plt.title('Gráfico de dispersión con línea de regresión')
plt.xlabel('Variable X')
plt.ylabel('Variable Y')
plt.show()

El resultado visual sería el siguiente:

Aquí, np.polyfit se utiliza para calcular la pendiente (m) e intersección (b) de la línea de regresión. Este enfoque permite una representación visual clara de la tendencia general de los datos.

Gráficas de línea (comparación de dos variables)

Las gráficas de línea son útiles para mostrar la relación entre dos variables continuas a lo largo del tiempo o cualquier otra dimensión ordenada. 

En Matplotlib, la función plot se utiliza para crear estas gráficas, que son ideales para visualizar tendencias y cambios graduales.

Para crear una gráfica de línea básica en Matplotlib, es esencial importar pyplot y utilizar la función plot

Un ejemplo básico es el siguiente:

import matplotlib.pyplot as plt

# Datos de ejemplo
x = [0, 1, 2, 3, 4, 5]
y = [0, 1, 4, 9, 16, 25]

# Crear una gráfica de línea
plt.plot(x, y, marker='o', linestyle='-', color='b')
plt.title('Gráfica de línea básica')
plt.xlabel('Variable X')
plt.ylabel('Variable Y')
plt.grid(True)
plt.show()

Así se vería la gráfica:

En este ejemplo, los puntos de datos están conectados por líneas azules, y se utilizan marcadores para destacar cada punto en el gráfico. La cuadrícula mejora la legibilidad.

Las gráficas de línea pueden personalizarse modificando el estilo de las líneas, los colores y los marcadores. A continuación se muestra cómo ajustar estos elementos:

# Datos de ejemplo
x = [0, 1, 2, 3, 4, 5]
y = [0, 1, 4, 9, 16, 25]

# Crear una gráfica de línea con estilo personalizado
plt.plot(x, y, marker='x', linestyle='--', color='r', linewidth=2)
plt.title('Gráfica de línea con estilo personalizado')
plt.xlabel('Variable X')
plt.ylabel('Variable Y')
plt.grid(True)
plt.show()

En este caso, la línea se muestra con un estilo de guiones (--), los marcadores son cruces (x) y el color es rojo. El grosor de la línea se ajusta mediante linewidth.

Para comparar dos variables en una sola gráfica, se pueden trazar múltiples líneas. Esto es útil para visualizar cómo cambian las variables relativas entre sí:

# Datos de ejemplo
x = [0, 1, 2, 3, 4, 5]
y1 = [0, 1, 4, 9, 16, 25]
y2 = [0, 1, 2, 3, 4, 5]

# Crear una gráfica de línea con dos variables
plt.plot(x, y1, label='Cuadrados', marker='o')
plt.plot(x, y2, label='Lineal', marker='s')
plt.title('Comparación de dos variables')
plt.xlabel('Variable X')
plt.ylabel('Valor')
plt.legend()
plt.show()

Aquí, se trazan dos líneas, una para cada conjunto de valores (y1 y y2). Las etiquetas (label) permiten identificar fácilmente cada línea en la leyenda.

Además, para analizar las tendencias en los datos, es posible añadir líneas de regresión o suavizado. Esto se puede lograr utilizando bibliotecas adicionales como numpy para calcular coeficientes o scipy para ajustar modelos más complejos.

import numpy as np

# Datos de ejemplo
x = np.array([0, 1, 2, 3, 4, 5])
y = np.array([0, 1, 4, 9, 16, 25])

# Calcular coeficientes de la línea de regresión
coef = np.polyfit(x, y, 2)
polinomio = np.poly1d(coef)

# Crear gráfica de línea con regresión
plt.plot(x, y, 'o', label='Datos')
plt.plot(x, polinomio(x), label='Regresión cuadrática')
plt.title('Ajuste de regresión en gráfica de línea')
plt.xlabel('Variable X')
plt.ylabel('Variable Y')
plt.legend()
plt.show()

En este ejemplo, se utiliza numpy para calcular un ajuste cuadrático. La función polyfit calcula los coeficientes del polinomio de ajuste, y poly1d genera el polinomio que se utiliza para trazar la línea de regresión.

Diagramas de calor (Heatmaps)

Los diagramas de calor son representaciones gráficas que muestran la intensidad de los valores de una matriz de datos por medio de colores. 

En Matplotlib, se pueden crear utilizando la función imshow, que permite visualizar matrices bidimensionales de manera efectiva. Estos gráficos son útiles para identificar patrones, anomalías y correlaciones en grandes conjuntos de datos.

Para crear un diagrama de calor en Matplotlib, se puede utilizar el siguiente ejemplo básico:

import matplotlib.pyplot as plt
import numpy as np

# Crear un generador de números aleatorios con una semilla específica
rng = np.random.default_rng(seed=42)

# Generar datos de ejemplo
data = rng.random((10, 10))

# Crear un diagrama de calor
plt.imshow(data, cmap='viridis', interpolation='nearest')
plt.colorbar(label='Intensidad')
plt.title('Diagrama de calor básico')
plt.xlabel('Eje X')
plt.ylabel('Eje Y')
plt.show()

Este sería el aspecto de la gráfica:

En este ejemplo, la matriz data se visualiza con la paleta de colores viridis, que es adecuada para representar datos continuos. La función colorbar añade una barra que ayuda a interpretar la intensidad de los colores.

Para personalizar los diagramas de calor, se pueden ajustar aspectos como la paleta de colores, la interpolación y las etiquetas. 

A continuación se muestra cómo modificar estos elementos:

import matplotlib.pyplot as plt
import numpy as np

# Crear un generador de números aleatorios con una semilla específica
rng = np.random.default_rng(seed=42)

# Generar datos de ejemplo
data = rng.random((10, 10))

# Crear un diagrama de calor con personalización
plt.imshow(data, cmap='hot', interpolation='bicubic')
plt.colorbar(label='Intensidad')
plt.title('Diagrama de calor personalizado')
plt.xlabel('Eje X')
plt.ylabel('Eje Y')

# Personalizar etiquetas de los ejes
plt.xticks(ticks=np.arange(10), labels=[f'X{i}' for i in range(10)])
plt.yticks(ticks=np.arange(10), labels=[f'Y{i}' for i in range(10)])

# Mostrar gráfico
plt.show()

Así se vería la gráfica:

Este ejemplo utiliza la paleta de colores hot y la interpolación bicubic para suavizar la visualización. Las etiquetas de los ejes se han personalizado para mejorar la legibilidad del gráfico.

Además, los diagramas de calor pueden ser útiles para representar matrices de correlación entre variables. Para ello, primero se debe calcular la matriz de correlación y luego visualizarla:

import matplotlib.pyplot as plt
import numpy as np

# Crear un generador de números aleatorios con una semilla específica
rng = np.random.default_rng(seed=42)

# Generar datos aleatorios
data = rng.random((100, 5))

# Calcular la matriz de correlación
correlacion = np.corrcoef(data, rowvar=False)

# Crear un diagrama de calor de la matriz de correlación
plt.imshow(correlacion, cmap='coolwarm', vmin=-1, vmax=1)
plt.colorbar(label='Correlación')
plt.title('Diagrama de calor de matriz de correlación')
plt.xlabel('Variable')
plt.ylabel('Variable')
plt.show()

El resultado visual sería el siguiente:

En este caso, la matriz de correlación se calcula usando np.corrcoef, y se visualiza con la paleta coolwarm que es ideal para representar valores que oscilan entre -1 y 1. La barra de color indica el grado de correlación.

Finalmente, para mejorar la interpretación de los diagramas de calor, se pueden añadir anotaciones que indiquen los valores numéricos en cada celda. Esto se puede lograr utilizando la función text de Matplotlib:

# Crear un diagrama de calor con anotaciones
plt.imshow(data, cmap='YlGnBu')
plt.colorbar(label='Intensidad')
plt.title('Diagrama de calor con anotaciones')
plt.xlabel('Eje X')
plt.ylabel('Eje Y')

# Añadir anotaciones
for i in range(data.shape[0]):
    for j in range(data.shape[1]):
        plt.text(j, i, f'{data[i, j]:.2f}', ha='center', va='center', color='black')

plt.show()

En este ejemplo, se añaden anotaciones en cada celda del diagrama, mostrando el valor numérico correspondiente. Esto es útil para análisis detallados donde es importante conocer los valores exactos.

Gráficos de barras apiladas y agrupadas

Los gráficos de barras son una herramienta eficaz para comparar cantidades entre diferentes categorías. En Matplotlib, los gráficos de barras apiladas y agrupadas permiten una representación más detallada y comparativa de los datos categóricos. Las barras apiladas se utilizan para mostrar la composición de cada categoría, mientras que las barras agrupadas facilitan la comparación directa entre categorías de diferentes grupos.

Para crear un gráfico de barras apiladas, se utiliza la función bar de Matplotlib, especificando la posición de las barras y acumulando los valores de cada categoría. Aquí tienes un ejemplo básico:

import matplotlib.pyplot as plt
import numpy as np

# Datos de ejemplo
categorias = ['A', 'B', 'C', 'D']
valores1 = [3, 2, 5, 7]
valores2 = [4, 6, 2, 5]

# Crear gráfico de barras apiladas
plt.bar(categorias, valores1, label='Conjunto 1')
plt.bar(categorias, valores2, bottom=valores1, label='Conjunto 2')
plt.title('Gráfico de barras apiladas')
plt.xlabel('Categorías')
plt.ylabel('Valores')
plt.legend()
plt.show()

La visualización resultante es la siguiente:

En este ejemplo, las barras de valores2 se apilan sobre las de valores1, representando la suma total de ambas series. El parámetro bottom es clave para lograr el apilamiento, ya que indica el punto de inicio de las barras superiores.

Para los gráficos de barras agrupadas, cada conjunto de datos se representa como un grupo de barras independientes. Esto se logra desplazando las posiciones de las barras en el eje x. A continuación se muestra un ejemplo de gráfico de barras agrupadas:

# Datos de ejemplo
ancho = 0.35  # Ancho de las barras
x = np.arange(len(categorias))

# Crear gráfico de barras agrupadas
plt.bar(x - ancho/2, valores1, width=ancho, label='Conjunto 1')
plt.bar(x + ancho/2, valores2, width=ancho, label='Conjunto 2')
plt.title('Gráfico de barras agrupadas')
plt.xlabel('Categorías')
plt.ylabel('Valores')
plt.xticks(x, categorías)
plt.legend()
plt.show()

Aquí, las barras de cada conjunto se desplazan horizontalmente usando el ancho de las barras (ancho) para evitar la superposición. La función xticks se utiliza para etiquetar correctamente las posiciones en el eje x.

La personalización de los gráficos de barras incluye la modificación de colores, etiquetas y estilos. Matplotlib permite ajustar estos parámetros para mejorar la interpretación visual. Por ejemplo, se pueden usar diferentes colores para cada conjunto de datos o aplicar patrones a las barras:

# Crear gráfico de barras apiladas con personalización
plt.bar(categorias, valores1, color='skyblue', label='Conjunto 1', hatch='/')
plt.bar(categorias, valores2, bottom=valores1, color='lightgreen', label='Conjunto 2', hatch='\\')
plt.title('Gráfico de barras apiladas personalizado')
plt.xlabel('Categorías')
plt.ylabel('Valores')
plt.legend()
plt.show()

En este caso, se aplican colores y patrones (hatch) diferentes a cada conjunto de barras, lo que facilita la distinción entre los conjuntos de datos.

Para situaciones donde se requiere añadir etiquetas de valor sobre cada barra, se puede utilizar la función text de Matplotlib. Esto ayuda a resaltar los valores exactos de cada segmento de barra:

# Crear gráfico de barras apiladas con etiquetas
barras1 = plt.bar(categorias, valores1, label='Conjunto 1')
barras2 = plt.bar(categorias, valores2, bottom=valores1, label='Conjunto 2')

# Añadir etiquetas de valor
for barra in barras1 + barras2:
    altura = barra.get_height()
    plt.text(barra.get_x() + barra.get_width() / 2, altura, f'{int(altura)}', ha='center', va='bottom')

plt.title('Gráfico de barras apiladas con etiquetas')
plt.xlabel('Categorías')
plt.ylabel('Valores')
plt.legend()
plt.show()

En este ejemplo, las etiquetas se colocan sobre cada segmento de barra, mostrando el valor correspondiente. La función get_height se utiliza para obtener la altura de cada barra, asegurando que las etiquetas se posicionen correctamente.

Aprende Matplotlib GRATIS online

Ejercicios de esta lección Gráficos bivariantes

Evalúa tus conocimientos de esta lección Gráficos bivariantes con nuestros retos de programación de tipo Test, Puzzle, Código y Proyecto con VSCode, guiados por IA.

Todas las lecciones de Matplotlib

Accede a todas las lecciones de Matplotlib y aprende con ejemplos prácticos de código y ejercicios de programación con IDE web sin instalar nada.

Introducción E Instalación De Matplotlib

2022-09-27T22:26:51.030457 image/svg+xml Matplotlib v3.6.0, https://matplotlib.org/

Introducción Y Entorno

Conceptos Básicos De Matplotlib

2022-09-27T22:26:51.030457 image/svg+xml Matplotlib v3.6.0, https://matplotlib.org/

Introducción Y Entorno

Gráficos Univariantes

2022-09-27T22:26:51.030457 image/svg+xml Matplotlib v3.6.0, https://matplotlib.org/

Creación De Gráficos

Gráficos Bivariantes

2022-09-27T22:26:51.030457 image/svg+xml Matplotlib v3.6.0, https://matplotlib.org/

Creación De Gráficos

Gráficos Multivariantes

2022-09-27T22:26:51.030457 image/svg+xml Matplotlib v3.6.0, https://matplotlib.org/

Creación De Gráficos

Títulos, Etiquetas Y Leyenda Y Límites

2022-09-27T22:26:51.030457 image/svg+xml Matplotlib v3.6.0, https://matplotlib.org/

Personalización De Gráficos

Temas Predefinidos, Colores Y Estilos

2022-09-27T22:26:51.030457 image/svg+xml Matplotlib v3.6.0, https://matplotlib.org/

Personalización De Gráficos

Ejes, Ajustes De Ejes

2022-09-27T22:26:51.030457 image/svg+xml Matplotlib v3.6.0, https://matplotlib.org/

Personalización De Gráficos

Subplots Y Grillas

2022-09-27T22:26:51.030457 image/svg+xml Matplotlib v3.6.0, https://matplotlib.org/

Personalización De Gráficos

Integración De Matplotlib Con Numpy

2022-09-27T22:26:51.030457 image/svg+xml Matplotlib v3.6.0, https://matplotlib.org/

Integraciones

Integración De Matplotlib Con Pandas

2022-09-27T22:26:51.030457 image/svg+xml Matplotlib v3.6.0, https://matplotlib.org/

Integraciones

Integración De Matplotlib Con Seaborn

2022-09-27T22:26:51.030457 image/svg+xml Matplotlib v3.6.0, https://matplotlib.org/

Integraciones

Evaluación Test De Conocimientos

2022-09-27T22:26:51.030457 image/svg+xml Matplotlib v3.6.0, https://matplotlib.org/

Evaluación Matplotlib

Evaluación Conocimiento De Código

2022-09-27T22:26:51.030457 image/svg+xml Matplotlib v3.6.0, https://matplotlib.org/

Evaluación Matplotlib

Accede GRATIS a Matplotlib y certifícate

Certificados de superación de Matplotlib

Supera todos los ejercicios de programación del curso de Matplotlib y obtén certificados de superación para mejorar tu currículum y tu empleabilidad.

En esta lección

Objetivos de aprendizaje de esta lección

1. Comprender el concepto de gráficas bivariantes y su relevancia en el análisis de datos.

2. Aprender a crear gráficos de dispersión para representar relaciones entre variables continuas.

3. Utilizar gráficos de línea para comparar dos variables a lo largo del tiempo.

4. Explorar el uso de diagramas de calor para visualizar patrones en conjuntos de datos grandes.

5. Conocer las mejores prácticas para elegir el tipo de gráfica adecuada según los datos.