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

Matplotlib

Tutorial Matplotlib: Gráficos univariantes

Descubre cómo crear y personalizar gráficas de línea en Matplotlib para analizar series temporales y tendencias en datos univariantes de manera efectiva.

Aprende Matplotlib GRATIS y certifícate

¿Qué son las gráficas univariantes?

Las gráficas univariantes son representaciones visuales que permiten analizar la distribución de una única variable. En el contexto de Matplotlib, estas gráficas son útiles para entender la distribución y las características básicas de datos unidimensionales. A través de estas representaciones, es posible identificar patrones, tendencias, y anomalías dentro de un conjunto de datos.

Las gráficas univariantes más comunes incluyen histogramas, diagramas de caja y bigotes, gráficos de violín y gráficas de línea. Cada uno de estos tipos de gráficas ofrece una perspectiva diferente sobre la distribución de los datos, permitiendo un análisis más completo. Los histogramas, por ejemplo, muestran la frecuencia de los valores dentro de intervalos especificados, mientras que los diagramas de caja y bigotes proporcionan una visión de la mediana, cuartiles y posibles valores atípicos.

Para crear una gráfica univariante básica en Matplotlib, se puede utilizar el siguiente ejemplo de código, que ilustra cómo generar un histograma:

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 utilizando el generador
data = rng.standard_normal(1000)

# Crear el histograma
plt.hist(data, bins=30, edgecolor='black')

# Añadir título y etiquetas
plt.title('Histograma de datos univariantes')
plt.xlabel('Valor')
plt.ylabel('Frecuencia')

# Mostrar la gráfica
plt.show()

En este ejemplo, se utiliza la función plt.hist() para crear un histograma de los datos generados aleatoriamente. El parámetro bins especifica el número de intervalos, y edgecolor define el color de los bordes de las barras, lo que mejora la claridad visual. Las funciones plt.title(), plt.xlabel(), y plt.ylabel() se utilizan para añadir un título y etiquetas a los ejes, respectivamente.

La gráfica se vería de la siguiente manera:

Al emplear gráficas univariantes, es importante considerar la elección adecuada del tipo de gráfica en función de la naturaleza de los datos y el tipo de análisis que se desee realizar. Esto permitirá obtener una comprensión más profunda y precisa de la distribución de la variable en estudio.

Histogramas

Los histogramas son una herramienta fundamental en el análisis de datos univariantes para representar la distribución de una variable

En Matplotlib, la función hist() proporciona una forma eficiente de crear estos gráficos. Un histograma divide el rango de datos en intervalos llamados bins, y cuenta cuántos valores de los datos caen en cada intervalo. Esto permite identificar la frecuencia de los valores y ofrece una visión clara de la distribución.

Para crear un histograma en Matplotlib, se debe especificar el conjunto de datos y la cantidad de bins. 

A continuación, se presenta un ejemplo de cómo generar un histograma 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 aleatorios utilizando el generador (distribución normal)
data = rng.normal(0, 1, 1000)

# Crear el histograma
plt.hist(data, bins=30, color='blue', alpha=0.7, edgecolor='black')

# Configurar título y etiquetas
plt.title('Distribución de Datos')
plt.xlabel('Valores')
plt.ylabel('Frecuencia')

# Mostrar gráfico
plt.show()

El código anterior generaría el siguiente histograma:

En este ejemplo, rng.normal(0, 1, 1000) genera un conjunto de datos con distribución normal utilizando el generador de números aleatorios moderno. La función plt.hist() utiliza bins=30 para definir el número de intervalos, color para establecer el color de las barras, y alpha para ajustar la transparencia, lo que permite superponer gráficos sin perder visibilidad. El parámetro edgecolor mejora la claridad visual de las barras añadiendo un borde negro.

La elección del número de bins es crucial; demasiados bins pueden hacer que el histograma sea ruidoso, mientras que muy pocos pueden ocultar características importantes de los datos. Es recomendable experimentar con diferentes configuraciones para encontrar la que mejor represente la distribución de los datos.

Matplotlib también ofrece opciones avanzadas para personalizar histogramas. Por ejemplo, se pueden crear histogramas acumulativos estableciendo el parámetro cumulative=True. Esto transforma el histograma en uno que muestra la frecuencia acumulada de los datos:

plt.hist(data, bins=30, cumulative=True, color='green', edgecolor='black')
plt.title('Histograma Acumulativo')
plt.xlabel('Valores')
plt.ylabel('Frecuencia Acumulada')
plt.show()

Otra característica útil es la normalización del histograma, que permite representar la densidad de probabilidad en lugar de la frecuencia absoluta. Esto se logra usando el parámetro density=True. Al normalizar, el área total del histograma es igual a 1, lo que facilita la comparación entre diferentes conjuntos de datos:

plt.hist(data, bins=30, density=True, color='purple', alpha=0.6, edgecolor='black')
plt.title('Densidad de Probabilidad')
plt.xlabel('Valores')
plt.ylabel('Densidad')
plt.show()

La normalización es especialmente útil cuando se comparan distribuciones de diferentes tamaños, ya que permite observar diferencias en la forma de las distribuciones sin que el tamaño del conjunto de datos afecte la visualización.

En resumen, los histogramas en Matplotlib son una herramienta versátil para visualizar distribuciones de datos univariantes. A través de la personalización de bins, colores, y parámetros como cumulative y density, se pueden adaptar a diversas necesidades analíticas.

Diagramas de Caja y Bigotes (Boxplots)

Los diagramas de caja y bigotes son una herramienta esencial para resumir la distribución de un conjunto de datos univariante. En Matplotlib, los boxplots proporcionan una manera visual de observar la mediana, los cuartiles y detectar valores atípicos en los datos. Un diagrama de caja y bigotes se compone de una caja que representa el rango intercuartílico (IQR) y líneas (bigotes) que se extienden para mostrar la variabilidad fuera de los cuartiles superiores e inferiores.

Para crear un boxplot en Matplotlib, se utiliza la función boxplot(), que permite personalizar diversos aspectos del gráfico. 

A continuación, se presenta un ejemplo de cómo crear un diagrama de caja y bigotes 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 con diferentes desviaciones estándar
data = [rng.normal(0, std, 100) for std in range(1, 4)]

# Crear el boxplot
plt.boxplot(data, vert=True, patch_artist=True, showmeans=True)

# Configurar título y etiquetas
plt.title('Diagrama de Caja y Bigotes')
plt.xlabel('Grupos')
plt.ylabel('Valores')

# Mostrar gráfico
plt.show()

El resultado visual sería el siguiente:

En este ejemplo, rng.normal(0, std, 100) genera tres conjuntos de datos con diferentes desviaciones estándar utilizando el nuevo generador de números aleatorios numpy.random.Generator. La función plt.boxplot() crea el diagrama de caja y bigotes, donde vert=True orienta las cajas verticalmente, patch_artist=True permite dar color a las cajas, y showmeans=True añade un marcador adicional para la media, facilitando la visualización del valor medio en cada grupo de datos.

Los bigotes del diagrama se extienden hasta el valor más extremo que no sea un valor atípico, que se define típicamente como 1.5 veces el IQR desde el cuartil superior o inferior. Los valores atípicos se representan como puntos individuales fuera de los bigotes. La personalización del color y estilo de las cajas y bigotes es posible utilizando el parámetro boxprops, whiskerprops, capprops, y flierprops.

Para mejorar la interpretación de los datos, es posible añadir anotaciones o cambiar el estilo visual. Por ejemplo, se pueden cambiar los colores de las cajas y bigotes para que sean más distintivos:

plt.boxplot(data, patch_artist=True,
            boxprops=dict(facecolor='lightblue', color='blue'),
            whiskerprops=dict(color='blue'),
            capprops=dict(color='blue'),
            flierprops=dict(marker='o', color='red', alpha=0.5),
            medianprops=dict(color='red'))
plt.title('Diagrama de Caja y Bigotes Personalizado')
plt.xlabel('Grupos')
plt.ylabel('Valores')
plt.show()

La capacidad de personalización de los diagramas de caja y bigotes en Matplotlib permite ajustar la visualización según las necesidades específicas del análisis. Además, los boxplots pueden ser empleados para comparar múltiples conjuntos de datos, revelando diferencias en la distribución y la presencia de valores atípicos.

Gráficos de Violín

Los gráficos de violín son una técnica avanzada de visualización que combina elementos de los diagramas de caja y bigotes con estimaciones de densidad de kernel, proporcionando una representación detallada de la distribución de los datos. 

A diferencia de los boxplots, que muestran solo la mediana y cuartiles, los gráficos de violín ofrecen una visión más completa al incluir la forma de la distribución, similar a un histograma suavizado.

Para crear un gráfico de violín en Matplotlib, se utiliza la función violinplot(). Esta función permite visualizar la densidad de los datos a través de un gráfico simétrico con forma de violín. 

A continuación, se presenta un ejemplo básico de cómo generar un gráfico de violín:

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 con diferentes desviaciones estándar
data = [rng.normal(0, std, 100) for std in range(1, 4)]

# Crear el gráfico de violín
plt.violinplot(data, showmeans=True, showmedians=True)

# Configurar título y etiquetas
plt.title('Gráfico de Violín')
plt.xlabel('Grupos')
plt.ylabel('Valores')

# Mostrar gráfico
plt.show()

Así se vería el gráfico de violín:

En este ejemplo, rng.normal(0, std, 100) genera conjuntos de datos con diferentes desviaciones estándar utilizando el nuevo generador de números aleatorios numpy.random.Generator. La función plt.violinplot() crea el gráfico de violín, donde showmeans=True y showmedians=True añaden marcadores para la media y la mediana, respectivamente, lo que facilita la comparación de la distribución de los datos en cada grupo.

Una de las ventajas clave de los gráficos de violín es su capacidad para mostrar múltiples modos en la distribución de los datos. Esto es particularmente útil cuando se trabaja con distribuciones que no son unimodales. Además, se puede personalizar la apariencia de los violines para mejorar la claridad visual:

parts = plt.violinplot(data, showmeans=False, showmedians=True)

# Personalizar la apariencia
for pc in parts['bodies']:
    pc.set_facecolor('lightblue')
    pc.set_edgecolor('black')
    pc.set_alpha(0.7)
parts['cmedians'].set_edgecolor('red')

plt.title('Gráfico de Violín Personalizado')
plt.xlabel('Grupos')
plt.ylabel('Valores')
plt.show()

En este código, se accede a las partes del gráfico de violín a través del diccionario parts, permitiendo personalizar aspectos como el color de las formas y la opacidad. El uso de gráficos de violín es ideal para visualizaciones donde es importante entender la forma total de la distribución de los datos, especialmente en comparación con otras técnicas univariantes más simples.

Gráficas de Línea

Las gráficas de línea son una herramienta fundamental en el análisis de series temporales y datos univariantes. 

En Matplotlib, la función plot() es la principal para crear este tipo de gráficos, permitiendo representar cómo una variable cambia a lo largo de un eje continuo, generalmente el tiempo. 

Este tipo de gráfico es ideal para visualizar tendencias y patrones en los datos, facilitando la identificación de incrementos, decrementos o estacionalidades.

Para crear una gráfica de línea básica en Matplotlib, se utiliza la función plot(x, y), donde x representa las coordenadas del eje horizontal y y las del eje vertical. 

A continuación, se presenta un ejemplo de cómo generar una gráfica de línea:

import matplotlib.pyplot as plt
import numpy as np

# Datos de ejemplo
x = np.linspace(0, 10, 100)
y = np.sin(x)

# Crear la gráfica de línea
plt.plot(x, y, label='Seno', color='blue', linewidth=2)

# Añadir título y etiquetas
plt.title('Gráfica de Línea de una Función Seno')
plt.xlabel('Eje X')
plt.ylabel('Eje Y')

# Añadir leyenda
plt.legend()

# Mostrar la gráfica
plt.show()

La visualización resultante es la siguiente:

En este ejemplo, np.linspace(0, 10, 100) genera 100 puntos equidistantes entre 0 y 10 y np.sin(x) calcula el seno de cada punto. La función plt.plot() crea la gráfica de línea, donde label añade una descripción para la leyenda, color especifica el color de la línea, y linewidth define el grosor de la línea.

Las gráficas de línea pueden ser altamente personalizadas en Matplotlib. Es posible modificar el estilo de las líneas, los marcadores en los puntos de datos, y añadir múltiples líneas en un mismo gráfico para comparar diferentes conjuntos de datos. 

A continuación, se muestra un ejemplo de cómo personalizar una gráfica de línea con diferentes estilos de línea y marcadores:

y2 = np.cos(x)
plt.plot(x, y, label='Seno', color='blue', linestyle='-', marker='o')
plt.plot(x, y2, label='Coseno', color='red', linestyle='--', marker='x')

# Configurar título y etiquetas
plt.title('Gráfica de Línea de Seno y Coseno')
plt.xlabel('Eje X')
plt.ylabel('Eje Y')

# Añadir leyenda
plt.legend()

# Mostrar gráfico
plt.show()

Aquí, se añaden dos líneas: una para la función seno y otra para la función coseno. Los parámetros linestyle y marker permiten personalizar el estilo de la línea y los marcadores, respectivamente. Esta capacidad de personalización es crucial para adaptar las gráficas a diferentes necesidades analíticas y de presentación.

Aprende Matplotlib GRATIS online

Ejercicios de esta lección Gráficos univariantes

Evalúa tus conocimientos de esta lección Gráficos univariantes 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 y la utilidad de las gráficas univariantes.

2. Aprender a crear histogramas para visualizar la frecuencia de datos.

3. Explorar el uso de diagramas de caja y bigotes para detectar outliers.

4. Utilizar gráficos de violín para visualizar la densidad de los datos.

5. Implementar gráficas de línea para analizar tendencias en series temporales.