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ícateEstructura 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()
oplt.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 conplt.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
, comoax.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()
yset_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()
oax.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.
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.
Evaluación código global
Integración de Matplotlib con Numpy
Evaluación test global
Análisis mercado de criptomonedas
Gráficos univariantes
Gráficos multivariantes
Conceptos básicos de Matplotlib
Análisis de ventas de videojuegos
Temas predefinidos, colores y estilos
Subplots y grillas
Gráficos bivariantes
Integración de Matplotlib con Pandas
Visualización de datos dataset iris
Introducción e instalación de Matplotlib
Ajuste de ejes en matplotlib
Integración de Matplotlib con Seaborn
Títulos, etiquetas y leyenda y límites
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
Introducción Y Entorno
Conceptos Básicos De Matplotlib
Introducción Y Entorno
Gráficos Univariantes
Creación De Gráficos
Gráficos Bivariantes
Creación De Gráficos
Gráficos Multivariantes
Creación De Gráficos
Títulos, Etiquetas Y Leyenda Y Límites
Personalización De Gráficos
Temas Predefinidos, Colores Y Estilos
Personalización De Gráficos
Ejes, Ajustes De Ejes
Personalización De Gráficos
Subplots Y Grillas
Personalización De Gráficos
Integración De Matplotlib Con Numpy
Integraciones
Integración De Matplotlib Con Pandas
Integraciones
Integración De Matplotlib Con Seaborn
Integraciones
Evaluación Test De Conocimientos
Evaluación Matplotlib
Evaluación Conocimiento De Código
Evaluación Matplotlib
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.