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

Matplotlib

Tutorial Matplotlib: Conceptos básicos de Matplotlib

Descubre cómo crear gráficos en Python con Matplotlib. Aprende sobre la estructura de una gráfica, personalización de ejes y más en esta guía completa.

Aprende Matplotlib GRATIS y certifícate

Estructura de una gráfica en Matplotlib

La estructura de una gráfica en Matplotlib se compone principalmente de varias partes fundamentales que permiten crear visualizaciones personalizadas y detalladas. Cada gráfico se organiza en una jerarquía que facilita el control sobre todos los aspectos de la visualización.

  • Figura (Figure): Es el contenedor principal de la gráfica. En Matplotlib, la figura actúa como un lienzo sobre el cual se pueden dibujar uno o más gráficos. Se crea utilizando plt.figure() o plt.subplots(). La figura puede contener múltiples ejes y se pueden ajustar sus dimensiones y resolución. Ejemplo de creación de una figura:
import matplotlib.pyplot as plt

fig = plt.figure(figsize=(8, 6), dpi=100)
  • Ejes (Axes): Son los elementos dentro de la figura donde se dibujan los gráficos. Cada eje es un sistema de coordenadas que contiene los datos y las etiquetas de los ejes. Se pueden añadir ejes a una figura usando fig.add_subplot() o directamente con plt.subplots(). Ejemplo:
ax = fig.add_subplot(111)
  • Área de trazado (Plot Area): Es la parte del eje donde se representan los datos. Aquí es donde se dibujan las líneas, puntos, barras, etc. La personalización del área de trazado se realiza mediante métodos del objeto Axes, como ax.plot(), ax.scatter(), y otros.
  • Etiquetas de ejes (Axis Labels): Son las etiquetas que describen las variables representadas en los ejes. Se pueden añadir con set_xlabel() y set_ylabel() para los ejes X e Y respectivamente. Ejemplo:
ax.set_xlabel('Eje X')
ax.set_ylabel('Eje Y')
  • Título (Title): El título proporciona contexto sobre el gráfico y se añade usando set_title(). Es una parte importante de la estructura que mejora la comprensión del gráfico. Ejemplo:
ax.set_title('Título de la gráfica')
  • Leyenda (Legend): La leyenda ayuda a identificar diferentes elementos o series de datos dentro del gráfico. Se puede añadir utilizando ax.legend(), que toma una lista de etiquetas como argumento. Ejemplo:
ax.plot([1, 2, 3], label='Serie 1')
ax.legend()
  • Anotaciones y textos: Se pueden añadir anotaciones para destacar puntos específicos en la gráfica, usando ax.annotate() o ax.text(). Estas anotaciones mejoran la claridad y el detalle del gráfico.

El código anterior generaría el siguiente gráfico:

La comprensión de esta estructura es crucial para aprovechar al máximo las capacidades de Matplotlib y crear gráficos que sean informativos y visualmente atractivos.

Uso de la interfaz pyplot vs uso de la interfaz orientada a objetos

Matplotlib ofrece dos enfoques principales para crear gráficos: la interfaz pyplot y la interfaz orientada a objetos (OO). Ambos métodos permiten la creación de visualizaciones efectivas, pero presentan diferencias importantes en términos de flexibilidad y control sobre los elementos de la gráfica.

La interfaz pyplot, inspirada en MATLAB, proporciona una forma más sencilla y directa de crear gráficos. Utiliza una interfaz de programación funcional que permite generar gráficos rápidamente con menos código. Este enfoque es útil para visualizaciones simples y rápidas, y es ideal para usuarios que buscan una experiencia de scripting similar a MATLAB

Un ejemplo básico de uso de pyplot es:

import matplotlib.pyplot as plt

plt.plot([1, 2, 3, 4], [10, 20, 25, 30])
plt.xlabel('Eje X')
plt.ylabel('Eje Y')
plt.title('Gráfico simple con pyplot')
plt.show()

Por otro lado, la interfaz orientada a objetos proporciona un control más detallado sobre los elementos gráficos. Este enfoque es preferido cuando se requiere personalizar múltiples gráficos dentro de una misma figura o cuando se necesita una mayor modularidad y reutilización del código. 

El uso de la interfaz OO implica crear instancias explícitas de Figure y Axes, lo que permite acceder a métodos más específicos para personalizar cada elemento. 

Un ejemplo de uso de la interfaz orientada a objetos es:

import matplotlib.pyplot as plt

fig, ax = plt.subplots()
ax.plot([1, 2, 3, 4], [10, 20, 25, 30])
ax.set_xlabel('Eje X')
ax.set_ylabel('Eje Y')
ax.set_title('Gráfico con interfaz orientada a objetos')
plt.show()

En la interfaz orientada a objetos, la creación de subgráficos es más intuitiva y escalable, especialmente para gráficos complejos o al trabajar con múltiples subtramas. La flexibilidad adicional de la interfaz OO es beneficiosa para proyectos a gran escala donde se necesita un control preciso sobre cada componente gráfico.

Ambos enfoques tienen sus ventajas y limitaciones. La elección entre pyplot y la interfaz orientada a objetos dependerá de la complejidad del proyecto y de las preferencias personales del desarrollador. Para tareas simples y rápidas, pyplot es una excelente opción. Sin embargo, para gráficos complejos y proyectos que requieren un control detallado, la interfaz orientada a objetos es más adecuada.

¿Qué tipos de visualizaciones existen y cuándo se deben usar?

Matplotlib es una biblioteca versátil que permite crear una amplia gama de visualizaciones para representar datos de manera efectiva. La selección del tipo de gráfico adecuado depende de las características de los datos y del mensaje que se desea transmitir. A continuación se detallan los tipos más comunes de visualizaciones y cuándo es apropiado utilizarlos.

  • Gráficos de líneas: Son útiles para mostrar tendencias a lo largo del tiempo o la relación entre dos variables continuas. Se utilizan cuando se desea resaltar cambios o patrones en los datos. Ejemplo de uso:
import matplotlib.pyplot as plt

x = [0, 1, 2, 3, 4]
y = [0, 1, 4, 9, 16]
plt.plot(x, y)
plt.xlabel('Tiempo')
plt.ylabel('Valor')
plt.title('Gráfico de líneas')
plt.show()

  • Gráficos de barras: Ideales para comparar cantidades discretas entre diferentes categorías. Se emplean cuando se quiere visualizar diferencias en magnitud entre grupos. Ejemplo:
import matplotlib.pyplot as plt

categorias = ['A', 'B', 'C']
valores = [4, 7, 1]
plt.bar(categorias, valores)
plt.xlabel('Categoría')
plt.ylabel('Valor')
plt.title('Gráfico de barras')
plt.show()

  • Histogramas: Se utilizan para representar la distribución de un conjunto de datos continuos, mostrando la frecuencia de ocurrencias en intervalos específicos. Son útiles para identificar patrones como la normalidad o la asimetría. Ejemplo:
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 los datos aleatorios utilizando el generador
datos = rng.standard_normal(1000)

# Crear el histograma
plt.hist(datos, bins=30)
plt.xlabel('Valor')
plt.ylabel('Frecuencia')
plt.title('Histograma')

# Mostrar el gráfico
plt.show()

  • Diagramas de dispersión: Utilizados para mostrar la relación entre dos variables numéricas, permitiendo identificar correlaciones o patrones de agrupamiento. Son esenciales en análisis de regresión y minería de datos. Ejemplo:
import matplotlib.pyplot as plt

x = [5, 7, 8, 5, 6, 7, 9, 2, 3, 4, 4, 4, 5, 6, 7]
y = [7, 4, 3, 8, 3, 2, 4, 9, 6, 1, 8, 7, 1, 2, 6]
plt.scatter(x, y)
plt.xlabel('Variable X')
plt.ylabel('Variable Y')
plt.title('Diagrama de dispersión')
plt.show()

  • Gráficos de sectores (pastel): Útiles para representar proporciones de un todo, mostrando cómo se descompone un conjunto en sus partes constituyentes. Sin embargo, son menos efectivos cuando hay muchas categorías o diferencias pequeñas. Ejemplo:
import matplotlib.pyplot as plt

labels = 'A', 'B', 'C', 'D'
sizes = [15, 30, 45, 10]
plt.pie(sizes, labels=labels, autopct='%1.1f%%')
plt.title('Gráfico de sectores')
plt.show()

  • Mapas de calor: Se utilizan para visualizar matrices de datos donde el color de cada celda representa la magnitud de los valores. Son útiles en análisis de correlación y para identificar patrones o anomalías en grandes conjuntos de datos. Ejemplo:
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.random((10, 10))

# Crear el mapa de calor
plt.imshow(data, cmap='hot', interpolation='nearest')
plt.colorbar()
plt.title('Mapa de calor')

# Mostrar el gráfico
plt.show()

La elección del tipo de visualización debe basarse en el tipo de datos y el mensaje que se desea comunicar. Un análisis cuidadoso de los datos y del público objetivo es crucial para seleccionar la visualización más adecuada.

Guardar gráficos en diferentes formatos

Matplotlib permite guardar gráficos en varios formatos de archivo, lo cual es crucial para compartir visualizaciones de manera efectiva. El método principal para guardar gráficos es savefig(), que ofrece flexibilidad en cuanto a formato, calidad y resolución. 

Los formatos comunes incluyen PNG, PDF, SVG y EPS. La elección del formato depende del uso que se le vaya a dar al gráfico; por ejemplo, PNG es ideal para la web debido a su compresión sin pérdida, mientras que PDF y SVG son mejores para documentos impresos por su capacidad de escalado sin pérdida de calidad.

Ejemplo básico para guardar un gráfico en formato PNG:

import matplotlib.pyplot as plt

# Creación de un gráfico simple
fig, ax = plt.subplots()
ax.plot([1, 2, 3], [4, 5, 6])

# Guardar el gráfico en formato PNG
fig.savefig('grafico.png', dpi=300)

El parámetro dpi especifica la resolución del gráfico. Un valor de 300 dpi es común para impresiones de alta calidad, mientras que 72 dpi es suficiente para visualizaciones en pantalla.

Para guardar gráficos en formatos vectoriales como PDF o SVG, lo cual es útil para incluir en documentos o presentaciones donde se requiere escalado sin pérdida, simplemente se especifica la extensión del archivo deseado:

fig.savefig('grafico.pdf')
fig.savefig('grafico.svg')

Matplotlib también admite opciones avanzadas como la inclusión de metadatos en archivos PDF, lo que puede ser útil para catalogar gráficos o incluir información adicional:

fig.savefig('grafico_con_metadatos.pdf', metadata={'Title': 'Mi Gráfico', 'Author': 'Nombre del Autor'})

Es importante tener en cuenta que al guardar gráficos, se pueden especificar parámetros adicionales como bbox_inches='tight' para recortar espacios en blanco alrededor del gráfico, lo que es útil para obtener un ajuste más preciso al contenido:

fig.savefig('grafico_ajustado.png', bbox_inches='tight')

En resumen, la capacidad de guardar gráficos en diferentes formatos en Matplotlib es una funcionalidad esencial para compartir y publicar visualizaciones. Elegir el formato adecuado y ajustar parámetros como la resolución y la calidad garantiza que el gráfico se presente de manera óptima para su propósito específico.

Aprende Matplotlib GRATIS online

Ejercicios de esta lección Conceptos básicos de Matplotlib

Evalúa tus conocimientos de esta lección Conceptos básicos de Matplotlib 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. Entender la estructura jerárquica de una gráfica en Matplotlib.

2. Aprender a crear y personalizar figuras y ejes.

3. Comprender las diferencias entre las interfaces pyplot y orientada a objetos.

4. Identificar los diferentes tipos de visualizaciones disponibles en Matplotlib.

5. Comprender cómo usar savefig() para guardar gráficos en diferentes formatos.