Funciones de Matplotlib
Matplotlib es la biblioteca de visualización de datos más utilizada en Python; admite la creación de gráficos estáticos, dinámicos e interactivos.
Este documento recopila de forma completa las funciones y métodos de todas las interfaces públicas de Matplotlib, para facilitar la consulta rápida de sus funciones y usos correspondientes.
Dos interfaces de programación
Matplotlib ofrece dos formas de uso, adecuadas para diferentes escenarios.
| Característica | Interfaz Axes (explícita / orientada a objetos) | Interfaz pyplot (implícita / funcional) |
|---|---|---|
| Forma de uso | Crear primero los objetos Figure y Axes, luego llamar a los métodos del objeto | Llamar directamente a las funciones del módulo pyplot, operando implícitamente sobre el gráfico actual |
| Escenario adecuado | Gráficos complejos, múltiples subtramas, control fino necesario | Gráficos rápidos, exploración interactiva, gráficos simples |
| Ejemplo de código | fig, ax = plt.subplots(); ax.plot(x, y) | plt.plot(x, y); plt.title("título") |
| Nivel de recomendación | Recomendado(más claro, más controlable) | Adecuado para escenarios simples y prototipos rápidos |
La interfaz Axes es la forma de programación recomendada oficialmente; la lógica del código es más clara y menos propensa a errores al manejar múltiples subtramas y gráficos complejos. Para facilitar la consulta rápida, a continuación se enumeran tanto las funciones de pyplot como los métodos correspondientes de Axes.
Módulo pyplot - Lista completa de funciones
pyplot es la interfaz de nivel superior de Matplotlib y ofrece una experiencia de trazado similar a MATLAB. A continuación se enumeran todas las funciones según la clasificación oficial.
1. Gestión de Figure y Axes
Funciones para crear y gestionar Figure (lienzo) y Axes (sistema de coordenadas/subtramas).
| Función | Descripción |
|---|---|
| figure() | Crea una nueva Figure o activa una Figure existente |
| subplots() | RecomendadoCrea una Figure y un conjunto de subtramas Axes |
| subplot() | Agrega una subtrama individual a la Figure actual (por índice de fila y columna) |
| subplot2grid() | Crea una subtrama en la posición especificada de un diseño de cuadrícula |
| subplot_mosaic() | Crea diseños complejos no uniformes usando cadenas de etiquetas |
| axes() | Agrega un Axes a la Figure actual |
| gca() | Obtiene el objeto Axes actual |
| gcf() | Obtiene el objeto Figure actual |
| sca() | Establece el Axes actual |
| cla() | Limpia el Axes actual |
| clf() | Limpia la Figure actual |
| close() | Cierra la ventana de Figure |
| delaxes() | Elimina el Axes especificado de la Figure |
| fignum_exists() | Comprueba si existe una Figure con el número especificado |
| get_figlabels() | Devuelve la lista de etiquetas de todas las Figures |
| get_fignums() | Devuelve la lista de números de todas las Figures |
| twinx() | Crea un doble eje y que comparte el eje x |
| twiny() | Crea un doble eje x que comparte el eje y |
2. Gráficos básicos
Las funciones de trazado de tipos de gráficos más utilizados.
| Función | Descripción |
|---|---|
| plot() | Dibuja un gráfico de líneas (el más común) |
| scatter() | Dibuja un diagrama de dispersión, con soporte para mapeo de tamaño/color/transparencia |
| bar() | Dibuja un gráfico de barras verticales |
| barh() | Dibuja un gráfico de barras horizontales |
| bar_label() | Agrega etiquetas de valor en las barras del gráfico de barras |
| grouped_bar() | Dibuja un gráfico de barras agrupadas |
| pie() | Dibuja un gráfico de pastel |
| pie_label() | Agrega etiquetas en el gráfico de pastel |
| stem() | Dibuja un gráfico de tallo y hojas (gráfico de fósforos / stem plot) |
| eventplot() | Dibuja un gráfico de eventos (varias líneas horizontales marcan posiciones de eventos) |
| step() | Dibuja un gráfico escalonado |
| fill() | Dibuja polígonos rellenos |
| fill_between() | Rellena el área entre dos curvas horizontales |
| fill_betweenx() | Rellena el área entre dos curvas verticales |
| stackplot() | Dibuja un gráfico de área apilada |
| broken_barh() | Dibuja un gráfico de barras horizontales discontinuas (estilo diagrama de Gantt) |
| vlines() | Dibuja una línea de referencia vertical |
| hlines() | Dibuja una línea de referencia horizontal |
| errorbar() | Dibuja un gráfico de líneas con barras de error |
| loglog() | Gráfico de líneas con escala logarítmica doble |
| semilogx() | Gráfico de líneas con eje x en escala logarítmica |
| semilogy() | Gráfico de líneas con eje y en escala logarítmica |
| polar() | Dibuja en un sistema de coordenadas polares |
3. Líneas de intervalo (Spans)
Dibuja líneas de referencia horizontales y verticales y regiones sombreadas.
| Función | Descripción |
|---|---|
| axhline() | Agrega una línea horizontal que atraviesa el Axes |
| axhspan() | Agrega una banda horizontal sombreada que atraviesa el Axes |
| axvline() | Agrega una línea vertical que atraviesa el Axes |
| axvspan() | Agrega una banda vertical sombreada que atraviesa el Axes |
| axline() | Agrega una línea recta infinita que pasa por dos puntos |
4. Análisis de espectro
Funciones para procesamiento de señales y visualización de espectros.
| Función | Descripción |
|---|---|
| acorr() | Dibuja un gráfico de autocorrelación |
| xcorr() | Dibujar gráfico de correlación cruzada |
| angle_spectrum() | Dibujar espectro angular |
| magnitude_spectrum() | Dibujar espectro de magnitud |
| phase_spectrum() | Dibujar espectro de fase |
| psd() | Dibujar densidad espectral de potencia |
| csd() | Dibujar densidad espectral cruzada |
| cohere() | Dibujar coherencia |
| specgram() | Dibujar espectrograma (gráfico tiempo-frecuencia) |
5. Gráficos estadísticos
Dibujar gráficos relacionados con distribuciones estadísticas.
| Función | Descripción de la función |
|---|---|
| boxplot() | Dibujar diagrama de caja |
| violinplot() | Dibujar diagrama de violín |
| ecdf() | Dibujar función de distribución acumulada empírica (ECDF) |
6. Agrupación en intervalos e histogramas
| Función | Descripción de la función |
|---|---|
| hist() | Dibujar histograma unidimensional |
| hist2d() | Dibujar histograma bidimensional |
| hexbin() | Dibujar gráfico de binning hexagonal |
| stairs() | Dibujar histograma escalonado (nueva versión, sustituye al modo step de hist) |
7. Curvas de nivel
| Función | Descripción de la función |
|---|---|
| contour() | Dibujar contornos |
| contourf() | Dibujar contornos rellenos |
| clabel() | Añadir etiquetas a los contornos |
8. Arreglos bidimensionales e imágenes
Funciones de visualización para mostrar datos bidimensionales, matrices e imágenes.
| Función | Descripción de la función |
|---|---|
| imshow() | Mostrar imagen o arreglo bidimensional (mapa de calor) |
| matshow() | Mostrar matriz como imagen en una nueva Figure |
| pcolor() | Dibujar gráfico de cuadrícula pseudocolor (crea PolyCollection) |
| pcolormesh() | Dibujar gráfico de cuadrícula pseudocolor (crea QuadMesh, mejor rendimiento) |
| spy() | Dibujar patrón de elementos no nulos de una matriz dispersa |
| figimage() | Colocar imagen a nivel de Figure (no de Axes) |
9. Mallas triangulares no estructuradas
| Función | Descripción de la función |
|---|---|
| triplot() | Dibujar malla triangular no estructurada |
| tripcolor() | Dibujar gráfico pseudocolor en malla triangular |
| tricontour() | Dibujar contornos sobre malla triangular |
| tricontourf() | Dibujar contornos rellenos sobre malla triangular |
10. Texto y anotaciones
| Función | Descripción de la función |
|---|---|
| text() | Añadir texto en coordenadas específicas del Axes |
| figtext() | Añadir texto en posición específica de la Figure |
| annotate() | Añadir anotación con flecha |
| arrow() | Añadir flecha |
| legend() | Añadir leyenda en el Axes |
| figlegend() | Añadir leyenda a nivel de Figure |
| table() | Añadir tabla en el Axes |
11. Campos vectoriales
| Función | Descripción de la función |
|---|---|
| quiver() | Dibujar campo vectorial (gráfico de flechas) |
| quiverkey() | Añadir clave de leyenda al campo vectorial |
| barbs() | Dibujar gráfico de barbas (en meteorología indica velocidad y dirección del viento) |
| streamplot() | Dibujar gráfico de líneas de flujo |
12. Configuración de ejes
Funciones para configurar el rango, las marcas, las etiquetas y la escala de los ejes.
| Función | Descripción de la función |
|---|---|
| title() | Establecer título del Axes |
| suptitle() | Establecer título general de la Figure |
| xlabel() | Establecer etiqueta del eje x |
| ylabel() | Establecer etiqueta del eje y |
| xlim() | Obtener o establecer rango del eje x |
| ylim() | Obtener o establecer rango del eje y |
| xscale() | Establecer escala del eje x (linear/log/symlog/logit...) |
| yscale() | Establecer escala del eje y (linear/log/symlog/logit...) |
| xticks() | Obtener o establecer posiciones y etiquetas de las marcas del eje x |
| yticks() | Obtener o establecer posiciones y etiquetas de las marcas del eje y |
| tick_params() | Ajustar apariencia de las marcas (dirección, color, tamaño, rotación de etiquetas, etc.) |
| ticklabel_format() | Establecer formato de las etiquetas de marcas (notación científica, etc.) |
| locator_params() | Controlar parámetros del localizador de marcas |
| minorticks_on() | Mostrar marcas secundarias |
| minorticks_off() | Ocultar marcas secundarias |
| rgrids() | Obtener o establecer líneas de cuadrícula radiales en gráficos polares |
| thetagrids() | Obtener o establecer líneas de cuadrícula angulares en gráficos polares |
| grid() | Activar o desactivar líneas de cuadrícula |
| axis() | Funciones convenientes para obtener o establecer ciertos atributos del eje |
| box() | Activar o desactivar los bordes del Axes |
| autoscale() | Escalar automáticamente los ejes para ajustarse a los datos |
13. Diseño (layout)
Funciones para controlar la disposición y el espaciado de los subgráficos.
| Función | Descripción de la función |
|---|---|
| subplots_adjust() | Ajustar manualmente el espaciado de subgráficos (left/right/top/bottom/wspace/hspace) |
| tight_layout() | Ajustar automáticamente los parámetros de subgráficos para una disposición compacta |
| margins() | Establecer u obtener márgenes de datos de los ejes |
| subplot_tool() | Iniciar ventana de herramienta interactiva de ajuste de subgráficos |
14. Mapas de color
Funciones relacionadas con colormaps y barras de color.
| Función | Descripción de la función |
|---|---|
| colorbar() | Añadir barra de color |
| clim() | Establecer rango de datos del mapa de color |
| get_cmap() | Obtener objeto colormap por nombre |
| set_cmap() | Establecer colormap predeterminado |
| gci() | Obtener el objeto de imagen actualmente mapeable a color |
| sci() | Establecer el objeto de imagen actualmente mapeable a color |
| imread() | Leer imagen desde archivo a un arreglo |
| imsave() | Guardar arreglo como archivo de imagen |
| colormaps | Objeto registro de colormaps |
| color_sequences | Objeto registro de secuencias de color |
15. Configuración
Funciones para administrar los parámetros de configuración global de Matplotlib.
| Función | Descripción de la función |
|---|---|
| rc() | Establecer parámetros rc (se pueden configurar en lote) |
| rc_context() | Administrador de contexto para establecer parámetros rc temporalmente |
| rcdefaults() | Restaurar todos los parámetros rc a sus valores predeterminados |
16. Salida e interacción
Funciones para controlar la visualización, el guardado y el modo interactivo de las figuras.
| Función | Descripción de la función |
|---|---|
| show() | Mostrar todas las Figures abiertas |
| savefig() | Guardar la Figure actual en un archivo |
| draw() | Forzar el re-renderizado de la Figure actual |
| draw_if_interactive() | Renderizar la Figure si está en modo interactivo |
| pause() | Pausar la cantidad de segundos especificada (procesando eventos durante la pausa) |
| ion() | Activar modo interactivo |
| ioff() | Desactivar modo interactivo |
| isinteractive() | Devolver si se está actualmente en modo interactivo |
| install_repl_displayhook() | Instalar hook de visualización de REPL (hace que las Figures se muestren automáticamente) |
| uninstall_repl_displayhook() | Desinstalar hook de visualización de REPL |
| switch_backend() | Cambiar de backend |
17. Otras funciones de utilidad
| Función | Descripción de la función |
|---|---|
| connect() | Vincular función de devolución de llamada de evento |
| disconnect() | Desvincular función de devolución de llamada de evento |
| ginput() | Obtener punto de coordenadas mediante clic del ratón |
| waitforbuttonpress() | Esperar pulsación de ratón o teclado y devolver el tipo de evento |
| findobj() | Buscar objetos Artist que coincidan con condiciones especificadas |
| get() | Obtener valor de atributo de un objeto Artist |
| getp() | Obtener atributos de un objeto Artist (alias de get) |
| setp() | Establecer atributos de un objeto Artist |
| get_current_fig_manager() | Obtener el administrador de ventanas de la Figure actual |
| new_figure_manager() | Crear un nuevo administrador de Figure para la Figure especificada |
| set_loglevel() | Establecer nivel de registro de Matplotlib |
| xkcd() | Cambiar al estilo xkcd (cómic dibujado a mano) |
Objeto Axes - Lista completa de métodos
Axes (objeto Axes) representa un subgráfico dentro de una Figure, que contiene datos, marcas, etiquetas, títulos, etc. A continuación se enumeran todos los métodos según la clasificación oficial.
1. Métodos básicos de dibujo
| Método | Descripción de la función |
|---|---|
| Axes.plot() | Gráfico de líneas |
| Axes.scatter() | Gráfico de dispersión |
| Axes.bar() | Gráfico de barras verticales |
| Axes.barh() | Gráfico de barras horizontales |
| Axes.bar_label() | Añadir etiquetas de valor en las barras |
| Axes.grouped_bar() | Gráfico de barras agrupadas |
| Axes.pie() | Gráfico circular |
| Axes.pie_label() | Etiquetas de gráfico circular |
| Axes.stem() | Gráfico de tallos |
| Axes.eventplot() | Gráfico de eventos |
| Axes.step() | Gráfico escalonado |
| Axes.fill() | Rellenar polígono |
| Axes.fill_between() | Rellenar área horizontal |
| Axes.fill_betweenx() | Rellenar área vertical |
| Axes.stackplot() | Gráfico de áreas apiladas |
| Axes.broken_barh() | Gráfico de barras horizontales discontinuas |
| Axes.vlines() | Línea de referencia vertical |
| Axes.hlines() | Línea de referencia horizontal |
| Axes.errorbar() | Gráfico de líneas con barras de error |
| Axes.loglog() | Coordenadas log-log |
| Axes.semilogx() | Coordenadas logarítmicas en eje x |
| Axes.semilogy() | Coordenadas logarítmicas en eje y |
2. Métodos de líneas de intervalo
| Método | Descripción de la función |
|---|---|
| Axes.axhline() | Línea de referencia horizontal |
| Axes.axvline() | Línea de referencia vertical |
| Axes.axhspan() | Banda sombreada horizontal |
| Axes.axvspan() | Banda sombreada vertical |
| Axes.axline() | Línea recta infinita que pasa por dos puntos |
3. Métodos de análisis de espectro
| Método | Descripción de la función |
|---|---|
| Axes.acorr() | Gráfico de autocorrelación |
| Axes.xcorr() | Gráfico de correlación cruzada |
| Axes.angle_spectrum() | Espectro angular |
| Axes.magnitude_spectrum() | Espectro de magnitud |
| Axes.phase_spectrum() | Espectro de fase |
| Axes.psd() | Densidad espectral de potencia |
| Axes.csd() | Densidad espectral cruzada |
| Axes.cohere() | Coherencia |
| Axes.specgram() | Espectrograma (gráfico tiempo-frecuencia) |
4. Métodos estadísticos
| Método | Descripción de la función |
|---|---|
| Axes.boxplot() | Diagrama de caja (boxplot) |
| Axes.bxp() | Dibujar un diagrama de caja a partir de estadísticas precalculadas |
| Axes.violinplot() | Diagrama de violín |
| Axes.violin() | Dibujar un diagrama de violín a partir de estadísticas precalculadas |
| Axes.ecdf() | Función de distribución acumulada empírica |
5. Métodos de agrupación en intervalos e histogramas
| Método | Descripción de la función |
|---|---|
| Axes.hist() | Histograma |
| Axes.hist2d() | Histograma 2D |
| Axes.hexbin() | Gráfico de hexágonos (hexbin) |
| Axes.stairs() | Histograma escalonado |
6. Métodos de curvas de nivel
| Método | Descripción de la función |
|---|---|
| Axes.contour() | Curvas de nivel (contorno) |
| Axes.contourf() | Curvas de nivel rellenas |
| Axes.clabel() | Etiquetas de curvas de nivel |
7. Métodos de arreglos bidimensionales
| Método | Descripción de la función |
|---|---|
| Axes.imshow() | Mostrar imagen/mapa de calor |
| Axes.matshow() | Imagen de matriz |
| Axes.pcolor() | Malla de pseudocolor (PolyCollection) |
| Axes.pcolorfast() | Pseudocolor rápido (dibujado con imshow) |
| Axes.pcolormesh() | Malla de pseudocolor (QuadMesh, recomendado) |
| Axes.spy() | Patrón de matriz dispersa |
8. Métodos de mallas triangulares no estructuradas
| Método | Descripción de la función |
|---|---|
| Axes.triplot() | Líneas de malla triangular |
| Axes.tripcolor() | Pseudocolor de malla triangular |
| Axes.tricontour() | Curvas de nivel de malla triangular |
| Axes.tricontourf() | Curvas de nivel rellenas de malla triangular |
9. Métodos de texto y anotaciones
| Método | Descripción de la función |
|---|---|
| Axes.text() | Añadir texto |
| Axes.annotate() | Añadir anotación con flecha |
| Axes.table() | Añadir tabla |
| Axes.arrow() | Añadir flecha |
| Axes.inset_axes() | Crear subgráfico incrustado dentro de los Axes |
| Axes.indicate_inset() | Marcar la región del subgráfico incrustado en los Axes padre |
| Axes.indicate_inset_zoom() | Marcar la región ampliada del subgráfico incrustado |
| Axes.secondary_xaxis() | Añadir eje x auxiliar (mostrar los mismos datos en otra ubicación) |
| Axes.secondary_yaxis() | Añadir eje y auxiliar |
10. Métodos de campos vectoriales
| Método | Descripción de la función |
|---|---|
| Axes.quiver() | Campo vectorial (gráfico de flechas) |
| Axes.quiverkey() | Escala de leyenda de campo vectorial |
| Axes.barbs() | Gráfico de barbas (wind barbs) |
| Axes.streamplot() | Gráfico de líneas de flujo (streamline) |
11. Métodos de limpieza
| Método | Descripción de la función |
|---|---|
| Axes.cla() | Limpiar todo el contenido de los Axes |
| Axes.clear() | Limpiar los Axes (igual que cla()) |
12. Métodos de apariencia
| Método | Descripción de la función |
|---|---|
| Axes.axis() | Establecer visibilidad o rango de los ejes |
| Axes.set_axis_off() | Ocultar los ejes |
| Axes.set_axis_on() | Mostrar los ejes |
| Axes.set_frame_on() | Mostrar el borde de los Axes |
| Axes.get_frame_on() | Obtener si el borde es visible |
| Axes.set_axisbelow() | Establecer si la cuadrícula/las marcas de graduación están detrás de los datos |
| Axes.get_axisbelow() | Obtener el nivel de la cuadrícula/marcas de graduación |
| Axes.grid() | Establecer líneas de cuadrícula |
| Axes.get_facecolor() | Obtener el color de fondo de los Axes |
| Axes.set_facecolor() | Establecer el color de fondo de los Axes |
13. Ciclo de propiedades
| Método | Descripción de la función |
|---|---|
| Axes.set_prop_cycle() | Establecer el ciclo de propiedades como color/estilo de línea |
14. Control de ejes y marcas (ticks)
Acceso a los ejes:
| Método | Descripción de la función |
|---|---|
| Axes.xaxis / Axes.yaxis | Obtener el objeto Axis de los ejes x/y (propiedad) |
| Axes.get_xaxis() / get_yaxis() | Obtener el objeto Axis de los ejes x/y |
Rango y dirección de los ejes:
| Método | Descripción de la función |
|---|---|
| Axes.set_xlim() / get_xlim() | Establecer/Obtener el rango del eje x |
| Axes.set_ylim() / get_ylim() | Establecer/Obtener el rango del eje y |
| Axes.set_xbound() / get_xbound() | Establecer/Obtener los límites inferior y superior del eje x |
| Axes.set_ybound() / get_ybound() | Establecer/Obtener los límites inferior y superior del eje y |
| Axes.invert_xaxis() | Invertir la dirección del eje x |
| Axes.invert_yaxis() | Invertir la dirección del eje y |
| Axes.xaxis_inverted() / yaxis_inverted() | Consultar si el eje está invertido |
| Axes.set_xinverted() / get_xinverted() | Establecer/Obtener si el eje x está invertido |
| Axes.set_yinverted() / get_yinverted() | Establecer/Obtener si el eje y está invertido |
| Axes.update_datalim() | Extender el rango de datos con nuevos puntos de datos |
Etiquetas de ejes y leyenda:
| Método | Descripción de la función |
|---|---|
| Axes.set_xlabel() / get_xlabel() | Establecer/Obtener la etiqueta del eje x |
| Axes.set_ylabel() / get_ylabel() | Establecer/Obtener la etiqueta del eje y |
| Axes.label_outer() | Conservar solo las etiquetas de marcas de graduación de los subgráficos exteriores |
| Axes.set_title() / get_title() | Establecer/Obtener el título de los Axes |
| Axes.legend() | Añadir leyenda |
| Axes.get_legend() | Obtener el objeto de leyenda actual |
| Axes.get_legend_handles_labels() | Obtener los manejadores (handles) y etiquetas de la leyenda |
Escala de los ejes:
| Método | Descripción de la función |
|---|---|
| Axes.set_xscale() / get_xscale() | Establecer/Obtener la escala del eje x |
| Axes.set_yscale() / get_yscale() | Establecer/Obtener la escala del eje y |
Autoescalado y márgenes:
| Método | Descripción de la función |
|---|---|
| Axes.autoscale() | Autoescalar la vista para ajustar los datos |
| Axes.autoscale_view() | Autoescalar solo la vista (sin cambiar márgenes) |
| Axes.margins() | Establecer u obtener los márgenes de datos |
| Axes.relim() | Recalcular la extensión de datos según los Artist actuales |
| Axes.use_sticky_edges() | Usar bordes adhesivos (sticky edges) |
| Axes.set_xmargin() / get_xmargin() | Establecer/Obtener el margen del eje x |
| Axes.set_ymargin() / get_ymargin() | Establecer/Obtener el margen del eje y |
| Axes.set_autoscale_on() / get_autoscale_on() | Establecer/Obtener si el autoescalado está activo |
| Axes.set_autoscalex_on() / get_autoscalex_on() | Establecer/Obtener si el eje x tiene autoescalado |
| Axes.set_autoscaley_on() / get_autoscaley_on() | Establecer/Obtener si el eje y tiene autoescalado |
Relación de aspecto:
| Método | Descripción de la función |
|---|---|
| Axes.set_aspect() / get_aspect() | Establecer/Obtener la relación de aspecto de los ejes ('equal'/'auto'/numérico) |
| Axes.set_box_aspect() / get_box_aspect() | Establecer/Obtener la relación de aspecto de la caja de los Axes |
| Axes.apply_aspect() | Aplicar la configuración actual de relación de aspecto |
| Axes.set_adjustable() / get_adjustable() | Establecer/Obtener la dirección ajustable ('box'/'datalim') |
Marcas de graduación y etiquetas:
| Método | Descripción de la función |
|---|---|
| Axes.set_xticks() / get_xticks() | Establecer/Obtener las posiciones de las marcas de graduación del eje x |
| Axes.set_yticks() / get_yticks() | Establecer/Obtener las posiciones de las marcas de graduación del eje y |
| Axes.set_xticklabels() / get_xticklabels() | Establecer/Obtener las etiquetas de las marcas de graduación del eje x |
| Axes.set_yticklabels() / get_yticklabels() | Establecer/Obtener las etiquetas de las marcas de graduación del eje y |
| Axes.get_xmajorticklabels() | Obtener las etiquetas de las marcas de graduación principales del eje x |
| Axes.get_xminorticklabels() | Obtener las etiquetas de las marcas de graduación secundarias del eje x |
| Axes.get_ymajorticklabels() | Obtener las etiquetas de las marcas de graduación principales del eje y |
| Axes.get_yminorticklabels() | Obtener las etiquetas de las marcas de graduación secundarias del eje y |
| Axes.get_xgridlines() | Obtener las líneas de cuadrícula del eje x |
| Axes.get_ygridlines() | Obtener las líneas de cuadrícula del eje y |
| Axes.get_xticklines() | Obtener las líneas de las marcas de graduación del eje x |
| Axes.get_yticklines() | Obtener las líneas de las marcas de graduación del eje y |
| Axes.xaxis_date() | Configurar las marcas de graduación del eje x en formato de fecha |
| Axes.yaxis_date() | Configurar las marcas de graduación del eje y en formato de fecha |
| Axes.minorticks_on() | Mostrar marcas de graduación secundarias |
| Axes.minorticks_off() | Ocultar marcas de graduación secundarias |
| Axes.ticklabel_format() | Establecer el formato de las etiquetas de las marcas de graduación |
| Axes.tick_params() | Ajustar parámetros de apariencia de las marcas de graduación |
| Axes.locator_params() | Controlar parámetros del localizador de marcas de graduación |
15. Unidades
| Método | Descripción de la función |
|---|---|
| Axes.convert_xunits() | Convertir valores x usando el convertidor de unidades |
| Axes.convert_yunits() | Convertir valores y usando el convertidor de unidades |
| Axes.have_units() | Comprobar si hay un convertidor de unidades registrado |
16. Agregar Artist
| Método | Descripción de la función |
|---|---|
| Axes.add_artist() | Añadir cualquier objeto Artist |
| Axes.add_child_axes() | Añadir subgráfico (subaxes) |
| Axes.add_collection() | Añadir objeto Collection |
| Axes.add_container() | Añadir objeto Container |
| Axes.add_image() | Añadir objeto AxesImage |
| Axes.add_line() | Añadir objeto Line2D |
| Axes.add_patch() | Añadir objeto Patch |
| Axes.add_table() | Añadir objeto Table |
17. Ejes dobles y ejes compartidos
| Método | Descripción de la función |
|---|---|
| Axes.twinx() | Crear eje y doble que comparte el eje x |
| Axes.twiny() | Crear eje x doble que comparte el eje y |
| Axes.sharex() | Compartir el eje x con otros Axes |
| Axes.sharey() | Compartir el eje y con otros Axes |
| Axes.get_shared_x_axes() | Obtener el objeto Grouper del eje x compartido |
| Axes.get_shared_y_axes() | Obtener el objeto Grouper del eje y compartido |
18. Posición de Axes
| Método | Descripción de la función |
|---|---|
| Axes.get_position() / set_position() | Obtener/Establecer la posición y el tamaño de los Axes en la Figure |
| Axes.get_anchor() / set_anchor() | Obtener/Establecer el ancla de los Axes (posición fija) |
| Axes.get_axes_locator() / set_axes_locator() | Obtener/Establecer la función de callback del localizador de los Axes |
| Axes.get_subplotspec() / set_subplotspec() | Obtener/Establecer el objeto SubplotSpec |
| Axes.reset_position() | Restablecer la posición de los Axes a su valor original |
19. Asincronía/Eventos
| Método | Descripción de la función |
|---|---|
| Axes.stale | Marcar si el Artist necesita ser redibujado (propiedad) |
| Axes.pchanged() | Marcar evento de cambio de propiedad |
| Axes.add_callback() | Añadir callback de cambio de propiedad |
| Axes.remove_callback() | Eliminar callback de cambio de propiedad |
20. Interacción
| Método | Descripción de la función |
|---|---|
| Axes.can_pan() / can_zoom() | Devuelve si se puede desplazar/escalar |
| Axes.set_navigate() / get_navigate() | Establecer/Obtener si la barra de herramientas de navegación está activada |
| Axes.set_navigate_mode() / get_navigate_mode() | Establecer/Obtener el modo de navegación |
| Axes.start_pan() / drag_pan() / end_pan() | Inicio/arrastre/fin de la operación de desplazamiento |
| Axes.format_coord() | Formatea la cadena de coordenadas mostrada en la barra de herramientas |
| Axes.format_cursor_data() | Formatea el valor de datos en la posición del cursor |
| Axes.format_xdata() / format_ydata() | Formatea los valores de datos x/y |
| Axes.mouseover() | Determina si el mouse está sobre los Axes |
| Axes.in_axes() | Determina si un punto está dentro de los Axes |
| Axes.contains() / contains_point() | Determina si un Artist contiene un punto |
| Axes.get_cursor_data() | Obtiene los datos en la posición del cursor |
| Axes.get_forward_navigation_events() / set_forward_navigation_events() | Obtiene/establece el reenvío de eventos de navegación |
21. Consulta de subelementos
| Método | Descripción de la función |
|---|---|
| Axes.get_children() | Obtiene todos los Artist secundarios |
| Axes.get_images() | Obtiene todos los objetos de imagen |
| Axes.get_lines() | Obtiene todos los objetos de polilínea |
| Axes.findobj() | Busca Artist secundarios que coincidan con la condición |
22. Dibujo
| Método | Descripción de la función |
|---|---|
| Axes.draw() | Renderiza los Axes |
| Axes.draw_artist() | Dibuja un solo Artist (método de bajo nivel) |
| Axes.redraw_in_frame() | Redibuja dentro del marco |
| Axes.get_window_extent() | Obtiene los límites de los Axes en la ventana de visualización |
| Axes.get_tightbbox() | Obtiene el cuadro delimitador ajustado de los Axes |
| Axes.get_rasterization_zorder() / set_rasterization_zorder() | Establecer/Obtener el umbral de zorder para rasterización |
23. Proyección (debe sobrescribirse en subclases)
| Método | Descripción de la función |
|---|---|
| Axes.name | Nombre de la proyección (por ejemplo, 'rectilinear', 'polar') |
| Axes.get_xaxis_transform() / get_yaxis_transform() | Obtiene la transformación de los ejes x/y |
| Axes.get_data_ratio() | Obtiene la relación de aspecto de los datos |
| Axes.get_xaxis_text1_transform() | Transformación de la etiqueta inferior del eje x |
| Axes.get_xaxis_text2_transform() | Transformación de la etiqueta superior del eje x |
| Axes.get_yaxis_text1_transform() | Transformación de la etiqueta izquierda del eje y |
| Axes.get_yaxis_text2_transform() | Transformación de la etiqueta derecha del eje y |
24. Otros métodos
| Método | Descripción de la función |
|---|---|
| Axes.set() | Establece atributos en lote |
| Axes.zorder | Obtener/establecer zorder (atributo) |
| Axes.get_figure() | Obtiene el objeto Figure al que pertenece |
| Axes.figure | Objeto Figure al que pertenece (atributo) |
| Axes.remove() | Se elimina a sí mismo de la Figure |
| Axes.has_data() | Comprueba si hay datos |
| Axes.get_default_bbox_extra_artists() | Obtiene los Artist que deben incluirse adicionalmente en el cálculo del cuadro delimitador |
| Axes.get_transformed_clip_path_and_affine() | Obtiene la ruta de recorte transformada |
| Axes.viewLim | Rango de vista (atributo) |
| Axes.dataLim | Rango de datos (atributo) |
| Axes.spines | Diccionario de líneas de borde (atributo) |
Objeto Figure - Lista completa de métodos
La Figure es el contenedor de nivel superior de todo el gráfico; gestiona todos los Axes, Artist y el diseño.
1. Agregar Axes y SubFigure
| Método | Descripción de la función |
|---|---|
| Figure.subplots() | RecomendadoCrea una cuadrícula de subtramas Axes |
| Figure.add_subplot() | Añade una sola subtrama según la posición de fila y columna |
| Figure.add_axes() | Añade Axes en una posición y tamaño específicos |
| Figure.subplot_mosaic() | Crea disposiciones complejas de subtramas mediante el diseño de etiquetas |
| Figure.add_gridspec() | Añade un objeto de diseño GridSpec |
| Figure.subfigures() | Crea una subfigura anidada |
| Figure.add_subfigure() | Añade una sola SubFigure |
| Figure.axes | Lista de Axes (atributo) |
| Figure.get_axes() | Obtiene todos los Axes |
| Figure.delaxes() | Elimina los Axes especificados |
2. Guardar
| Método | Descripción de la función |
|---|---|
| Figure.savefig() | Guarda la Figure en un archivo |
3. Anotaciones a nivel de Figure
| Método | Descripción de la función |
|---|---|
| Figure.suptitle() / get_suptitle() | Establecer/Obtener el título general de la Figure |
| Figure.supxlabel() / get_supxlabel() | Establecer/Obtener la etiqueta x a nivel de Figure |
| Figure.supylabel() / get_supylabel() | Establecer/Obtener la etiqueta y a nivel de Figure |
| Figure.colorbar() | Añade una barra de colores |
| Figure.legend() | Añade una leyenda global |
| Figure.text() | Añade texto a nivel de Figure |
| Figure.align_labels() | Alinea las etiquetas de los ejes de todas las subtramas |
| Figure.align_xlabels() | Alinea las etiquetas del eje x de todas las subtramas |
| Figure.align_ylabels() | Alinea las etiquetas del eje y de todas las subtramas |
| Figure.align_titles() | Alinea los títulos de todas las subtramas |
| Figure.autofmt_xdate() | Rota automáticamente las etiquetas de marcas de fecha |
4. Geometría de Figure
| Método | Descripción de la función |
|---|---|
| Figure.set_size_inches() / get_size_inches() | Establecer/Obtener el tamaño de la Figure (en pulgadas) |
| Figure.set_figheight() / get_figheight() | Establecer/Obtener la altura de la Figure |
| Figure.set_figwidth() / get_figwidth() | Establecer/Obtener el ancho de la Figure |
| Figure.dpi | Resolución DPI (atributo) |
| Figure.set_dpi() / get_dpi() | Establecer/Obtener el DPI |
5. Diseño de subtramas
| Método | Descripción de la función |
|---|---|
| Figure.subplots_adjust() | Ajusta manualmente el espaciado entre subtramas |
| Figure.set_layout_engine() | Establece el motor de diseño ('constrained'/'compressed'/'none') |
| Figure.get_layout_engine() | Obtiene el motor de diseño actual |
| Figure.tight_layout() | Diseño compacto automático (ya no recomendado) |
| Figure.set_tight_layout() / get_tight_layout() | Establecer/Obtener tight_layout (ya no recomendado) |
| Figure.set_constrained_layout() / get_constrained_layout() | Establecer/Obtener constrained_layout (ya no recomendado) |
| Figure.set_constrained_layout_pads() / get_constrained_layout_pads() | Establecer/Obtener los márgenes de constrained_layout (ya no recomendado) |
6. Interacción
| Método | Descripción de la función |
|---|---|
| Figure.ginput() | Obtiene puntos de coordenadas mediante clics del mouse |
| Figure.waitforbuttonpress() | Espera una pulsación del mouse o del teclado |
| Figure.pick() | Dispara el evento pick |
| Figure.add_axobserver() | Añade un observador de Axes |
7. Modificación de apariencia
| Método | Descripción de la función |
|---|---|
| Figure.set_frameon() / get_frameon() | Establecer/Obtener si el fondo de la Figure es visible |
| Figure.set_linewidth() / get_linewidth() | Establecer/Obtener el ancho de línea del borde de la Figure |
| Figure.set_facecolor() / get_facecolor() | Establecer/Obtener el color de fondo de la Figure |
| Figure.set_edgecolor() / get_edgecolor() | Establecer/Obtener el color del borde de la Figure |
8. Agregar y obtener Artist
| Método | Descripción de la función |
|---|---|
| Figure.add_artist() | Añade cualquier Artist |
| Figure.figimage() | Coloca una imagen a nivel de Figure |
| Figure.get_children() | Obtiene todos los Artist secundarios |
9. Gestión de estado
| Método | Descripción de la función |
|---|---|
| Figure.clear() | Limpia la Figure |
| Figure.gca() | Obtiene los Axes actuales |
| Figure.sca() | Establece los Axes actuales |
| Figure.show() | Muestra la Figure |
| Figure.draw() | Renderiza la Figure |
| Figure.draw_artist() | Dibuja un solo Artist |
| Figure.draw_without_rendering() | Calcula el diseño sin renderizar (para obtener información de dimensiones) |
| Figure.set_canvas() | Establece el lienzo (canvas) |
| Figure.get_tightbbox() | Obtiene el cuadro delimitador ajustado de la Figure |
| Figure.get_window_extent() | Obtiene los límites de la Figure en la ventana de visualización |
10. Funciones auxiliares
| Función | Descripción de la función |
|---|---|
| figaspect() | Calcula el tamaño de la Figure según la relación de aspecto especificada |
Objeto SubFigure - Lista de métodos
SubFigure es una subfigura lógica anidada dentro de la Figure principal; posee métodos similares a los de Figure.
Agregar Axes
| Método | Descripción de la función |
|---|---|
| SubFigure.subplots() | Crea una cuadrícula de subtramas |
| SubFigure.add_subplot() | Añade una sola subtrama |
| SubFigure.add_axes() | Añade Axes en una posición específica |
| SubFigure.subplot_mosaic() | Subtramas con diseño de etiquetas |
| SubFigure.add_gridspec() | Añade GridSpec |
| SubFigure.subfigures() | Crea una SubFigure anidada a mayor profundidad |
| SubFigure.add_subfigure() | Añade una sola SubFigure |
| SubFigure.delaxes() | Elimina Axes |
Anotaciones
| Método | Descripción de la función |
|---|---|
| SubFigure.suptitle() / get_suptitle() | Título general de SubFigure |
| SubFigure.supxlabel() / get_supxlabel() | Etiqueta x de SubFigure |
| SubFigure.supylabel() / get_supylabel() | Etiqueta y de SubFigure |
| SubFigure.colorbar() | Barra de colores |
| SubFigure.legend() | Leyenda |
| SubFigure.text() | Texto |
| SubFigure.align_labels() | Alinear etiquetas |
| SubFigure.align_xlabels() / align_ylabels() | Alinear etiquetas x/y |
| SubFigure.align_titles() | Alinear títulos |
Artist y apariencia
| Método | Descripción de la función |
|---|---|
| SubFigure.add_artist() | Añadir Artist |
| SubFigure.get_children() | Obtener Artist secundarios |
| SubFigure.set_frameon() / get_frameon() | Establecer/Obtener el borde |
| SubFigure.set_linewidth() / get_linewidth() | Establecer/Obtener el ancho de línea |
| SubFigure.set_facecolor() / get_facecolor() | Establecer/Obtener el color de fondo |
| SubFigure.set_edgecolor() / get_edgecolor() | Establecer/Obtener el color del borde |
| SubFigure.set_dpi() / get_dpi() | Establecer/Obtener el DPI |
Referencia rápida de configuración de estilos
Hojas de estilo integradas
Medianteplt.style.use('name')cambiar de estilo.
| Nombre del estilo | Descripción del estilo |
|---|---|
| default | Estilo predeterminado, claro y neutro |
| ggplot | Simula el estilo de R ggplot2, fondo gris con cuadrícula blanca |
| seaborn-v0_8 | Estilo moderno similar a la librería seaborn |
| seaborn-v0_8-bright | Paleta brillante de seaborn |
| seaborn-v0_8-colorblind | Paleta de seaborn apta para daltonismo |
| seaborn-v0_8-dark | Estilo oscuro de seaborn |
| seaborn-v0_8-dark-palette | Paleta de colores oscura de seaborn |
| seaborn-v0_8-darkgrid | Seaborn oscuro con cuadrícula |
| seaborn-v0_8-deep | Tono oscuro de seaborn |
| seaborn-v0_8-muted | Tono suave de seaborn |
| seaborn-v0_8-notebook | Estilo notebook de seaborn |
| seaborn-v0_8-paper | Estilo paper de seaborn |
| seaborn-v0_8-pastel | Tono pastel de seaborn |
| seaborn-v0_8-poster | Estilo póster de seaborn |
| seaborn-v0_8-talk | Estilo talk de seaborn |
| seaborn-v0_8-ticks | Estilo de ticks de seaborn |
| seaborn-v0_8-white | Fondo blanco de seaborn |
| seaborn-v0_8-whitegrid | Seaborn blanco con cuadrícula |
| fivethirtyeight | Imita el estilo de periodismo de datos de FiveThirtyEight |
| dark_background | Fondo oscuro, adecuado para presentaciones y uso nocturno |
| bmh | Estilo Bayesian Methods for Hackers |
| grayscale | Estilo en escala de grises, ideal para impresión en blanco y negro |
| classic | Estilo clásico de Matplotlib v1.x |
| fast | Estilo simplificado, renderizado más rápido |
| Solarize_Light2 | Tema claro Solarized |
| tableau-colorblind10 | Paleta de Tableau apta para daltonismo |
Configuración común de rcParams
| Parámetro | Descripción | Valor de ejemplo |
|---|---|---|
| figure.figsize | Tamaño predeterminado de la figura (en pulgadas) | [8, 6] |
| figure.dpi | Resolución predeterminada | 100 |
| figure.facecolor | Color de fondo de la Figure | 'white' |
| figure.edgecolor | Color del borde de la Figure | 'white' |
| font.size | Tamaño de fuente global | 12 |
| font.family | Familia de fuentes | 'sans-serif' |
| font.sans-serif | Lista de fuentes sans-serif | ['DejaVu Sans', ...] |
| axes.titlesize | Tamaño de fuente del título | 'large' |
| axes.labelsize | Tamaño de fuente de las etiquetas de los ejes | 'medium' |
| axes.grid | Mostrar cuadrícula por defecto | False |
| axes.facecolor | Color de fondo de los Axes | 'white' |
| axes.spines.top | Mostrar borde superior | True |
| axes.spines.right | Mostrar borde derecho | True |
| lines.linewidth | Grosor de línea predeterminado | 1.5 |
| lines.markersize | Tamaño de marcador predeterminado | 6 |
| lines.linestyle | Estilo de línea predeterminado | '-' |
| legend.loc | Posición predeterminada de la leyenda | 'best' |
| legend.fontsize | Tamaño de fuente de la leyenda | 'medium' |
| xtick.labelsize | Tamaño de las etiquetas de los ticks del eje x | 'medium' |
| ytick.labelsize | Tamaño de las etiquetas de los ticks del eje y | 'medium' |
| savefig.dpi | Resolución predeterminada al guardar imágenes | 'figure' |
| savefig.bbox | Modo de límites al guardar | None |
| image.cmap | Colormap predeterminado | 'viridis' |
| image.interpolation | Método de interpolación de imágenes | 'antialiased' |
Referencia rápida de colormap (mapa de color)
| Categoría | Nombre del colormap | Escenarios de uso |
|---|---|---|
| Perceptualmente uniforme (Sequential) | viridis, plasma, inferno, magma, cividis | Datos continuos, apto para daltonismo, primera opción recomendada |
| Secuencial (degradado de un solo color) | Greys, Purples, Blues, Greens, Oranges, Reds, YlOrBr, YlOrRd, OrRd, PuRd, RdPu, BuPu, GnBu, PuBu, YlGnBu, PuBuGn, BuGn, YlGn | Datos continuos de menor a mayor, de un solo tono |
| Divergente (Diverging) | PiYG, PRGn, BrBG, PuOr, RdGy, RdBu, RdYlBu, RdYlGn, Spectral, coolwarm, bwr, seismic | Datos bidireccionales con un punto de referencia central |
| Cíclico (Cyclic) | twilight, twilight_shifted, hsv | Datos periódicos (como ángulos, tiempo) |
| Cualitativo (Qualitative) | Pastel1, Pastel2, Paired, Accent, Dark2, Set1, Set2, Set3, tab10, tab20, tab20b, tab20c | Datos categóricos discretos |
| Miscelánea | flag, prism, ocean, gist_earth, terrain, gist_stern, gnuplot, gnuplot2, CMRmap, cubehelix, brg, gist_rainbow, rainbow, jet, turbo, nipy_spectral, gist_ncar | Usos especiales o efectos visuales |
'viridis'Es el colormap predeterminado desde Matplotlib 2.0, con excelente uniformidad perceptual y apto para daltonismo; es la primera opción en la mayoría de los escenarios. Evite usar'jet'y'rainbow', ya que tienen problemas de distorsión perceptual.
Ejemplos comunes
Ejemplo 1: Gráfico de líneas básico y diagrama de dispersión
Cree un gráfico con varias curvas y anotaciones usando la interfaz explícita de Axes.
Ejemplo
import numpy as np
# Generar datos: 100 puntos equidistantes entre 0 y 10
x = np.linspace(0, 10, 100)
y1 = np.sin(x) # Función seno
y2 = np.cos(x) # Función coseno
# Crear Figure y Axes (interfaz explícita, recomendado)
fig, ax = plt.subplots(figsize=(8, 4), layout='constrained')
# Dibujar dos líneas, configurando color, estilo de línea y etiquetas
ax.plot(x, y1, label='sin(x)', color='blue', linewidth=2)
ax.plot(x, y2, label='cos(x)', color='red', linestyle='--', linewidth=2)
# Añadir puntos de dispersión resaltados en las posiciones de los picos
peak_idx_sin = np.argmax(y1)
peak_idx_cos = np.argmax(y2)
ax.scatter(x[peak_idx_sin], y1[peak_idx_sin],
color='blue', s=100, zorder=5)
ax.scatter(x[peak_idx_cos], y2[peak_idx_cos],
color='red', s=100, zorder=5)
# Decoración: título, etiquetas de ejes, leyenda, cuadrícula
ax.set_title('Sine and Cosine Functions', fontsize=14)
ax.set_xlabel('x (radians)')
ax.set_ylabel('Amplitude')
ax.legend(loc='upper right')
ax.grid(True, alpha=0.3)
plt.show()
print("ejemplo: plot displayed successfully")
Ejemplo 2: Diseño de múltiples subtramas (2x2)
Muestra cómo crear diferentes tipos de subtramas en una sola Figure.
Ejemplo
import numpy as np
x = np.linspace(0, 2 * np.pi, 100)
# Crear subtramas 2x2 (interfaz orientada a objetos)
fig, axes = plt.subplots(2, 2, figsize=(10, 8), layout='constrained')
fig.suptitle('Multi-panel EJEMPLO Demo', fontsize=16)
# Subtrama (0,0): gráfico de líneas
axes[0, 0].plot(x, np.sin(x), color='tab:blue', linewidth=2)
axes[0, 0].set_title('Line Plot')
axes[0, 0].set_ylabel('sin(x)')
# Subtrama (0,1): gráfico de dispersión
np.random.seed(42)
colors = np.random.rand(50)
sizes = np.random.rand(50) * 200
axes[0, 1].scatter(np.random.rand(50), np.random.rand(50),
c=colors, s=sizes, alpha=0.6, cmap='viridis')
axes[0, 1].set_title('Scatter Plot')
# Subtrama (1,0): gráfico de barras (con etiquetas de valor)
categories = ['A', 'B', 'C', 'D', 'E']
values = [23, 45, 56, 78, 32]
bars = axes[1, 0].bar(categories, values,
color='tab:green', edgecolor='white')
axes[1, 0].bar_label(bars) # Mostrar los valores sobre las barras
axes[1, 0].set_title('Bar Chart')
# Subtrama (1,1): histograma
data = np.random.randn(1000)
axes[1, 1].hist(data, bins=30, color='tab:orange',
edgecolor='white', alpha=0.8)
axes[1, 1].axvline(x=0, color='red', linestyle='--', linewidth=2)
axes[1, 1].set_title('Histogram')
plt.show()
Ejemplo 3: Comparación de mapa de calor y curvas de nivel
Muestra la visualización de datos 2D en la misma Figure usando imshow y contourf.
Ejemplo
import numpy as np
# Crear datos de cuadrícula 2D
x = np.linspace(-3, 3, 100)
y = np.linspace(-3, 3, 100)
X, Y = np.meshgrid(x, y)
Z = np.sin(X) * np.cos(Y) # Valores de la función 2D
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(12, 5),
layout='constrained')
# Gráfico izquierdo: mapa de calor (imshow)
im = ax1.imshow(Z, extent=[-3, 3, -3, 3], origin='lower',
cmap='viridis', aspect='auto')
ax1.set_title('Heatmap (imshow)', fontsize=14)
ax1.set_xlabel('X')
ax1.set_ylabel('Y')
fig.colorbar(im, ax=ax1, label='Amplitude', shrink=0.8)
# Gráfico derecho: contorno relleno (contourf)
contour = ax2.contourf(X, Y, Z, levels=15, cmap='RdYlBu')
# Superponer bordes de las curvas de nivel
ax2.contour(X, Y, Z, levels=15, colors='black', linewidths=0.5)
ax2.set_title('Filled Contour (contourf)', fontsize=14)
ax2.set_xlabel('X')
ax2.set_ylabel('Y')
fig.colorbar(contour, ax=ax2, label='Amplitude', shrink=0.8)
plt.show()
Ejemplo 4: Cambio de estilo y guardado de imagen
Personalice la apariencia con hojas de estilo y rcParams, y guarde imágenes de alta calidad.
Ejemplo
import numpy as np
# Usar el estilo ggplot y luego ajustar algunos parámetros
plt.style.use('ggplot')
plt.rcParams['figure.figsize'] = [8, 6]
plt.rcParams['font.size'] = 12
x = np.linspace(0, 10, 50)
y1 = np.exp(-x/3) * np.sin(2 * x) # Onda senoidal amortiguada
y2 = np.exp(-x/3) * np.cos(2 * x) # Onda coseno amortiguada
fig, ax = plt.subplots()
ax.plot(x, y1, 'o-', label='Damped sin', markersize=6)
ax.plot(x, y2, 's--', label='Damped cos', markersize=6)
# Anotar el primer pico
peak_idx = np.argmax(y1)
ax.annotate(f'Peak: {y1[peak_idx]:.2f}',
xy=(x[peak_idx], y1[peak_idx]),
xytext=(x[peak_idx] + 1.5, y1[peak_idx] + 0.15),
arrowprops=dict(arrowstyle='->', color='gray'),
fontsize=10)
ax.set_title('Damped Oscillation', fontsize=16)
ax.set_xlabel('Time (s)')
ax.set_ylabel('Amplitude')
ax.legend()
ax.grid(True)
# Guardar como PNG de alta calidad a 300 DPI
fig.savefig('ejemplo_damped_oscillation.png',
dpi=300, bbox_inches='tight')
print("ejemplo: figure saved successfully")
plt.show()
Ejemplo 5: Diseño complejo con mosaic
Utilice subplot_mosaic para crear disposiciones de subtramas no uniformes.
Ejemplo
import numpy as np
# La cadena de mosaic define el diseño:
# 'A' ocupa toda la fila superior, 'B' y 'C' están abajo a la izquierda y en el centro izquierdo, 'D' ocupa la parte inferior derecha en vertical.
layout = """
A A A
B C D
"""
fig, axes = plt.subplot_mosaic(layout, figsize=(10, 6),
layout='constrained')
fig.suptitle('Complex Mosaic Layout (EJEMPLO)', fontsize=16)
# Panel A: gráfico de líneas (ocupa la parte superior)
x = np.linspace(0, 10, 100)
axes['A'].plot(x, np.sin(x), label='sin(x)')
axes['A'].plot(x, np.cos(x), label='cos(x)')
axes['A'].set_title('Panel A: Line Plot')
axes['A'].legend()
# Panel B: gráfico circular
sizes = [30, 25, 20, 15, 10]
labels = ['Python', 'Java', 'C++', 'Rust', 'Go']
axes['B'].pie(sizes, labels=labels, autopct='%1.1f%%',
startangle=90)
axes['B'].set_title('Panel B: Pie Chart')
# Panel C: gráfico de barras
axes['C'].bar(['X', 'Y', 'Z'], [10, 25, 15],
color=['#ff6b6b', '#4ecdc4', '#45b7d1'])
axes['C'].set_title('Panel C: Bar Chart')
# Panel D: mapa de calor
matrix = np.random.rand(5, 5)
im = axes['D'].imshow(matrix, cmap='Blues', aspect='auto')
axes['D'].set_title('Panel D: Heatmap')
fig.colorbar(im, ax=axes['D'])
plt.show()
Ejemplo 6: Doble eje y y subtramas incrustadas
Muestra el uso de secondary_axis, twinx e inset_axes.
Ejemplo
import numpy as np
fig, ax = plt.subplots(figsize=(8, 5), layout='constrained')
x = np.linspace(0, 10, 100)
# Gráfico principal: dibujar dos curvas con diferentes dimensiones
ax.plot(x, np.sin(x), 'b-', label='sin(x) [amplitude]')
ax.set_xlabel('x (radians)')
ax.set_ylabel('sin(x)', color='blue')
ax.tick_params(axis='y', labelcolor='blue')
# Crear doble eje y (compartiendo el eje x)
ax2 = ax.twinx()
ax2.plot(x, np.exp(x/5), 'r--', label='exp(x/5) [growth]')
ax2.set_ylabel('exp(x/5)', color='red')
ax2.tick_params(axis='y', labelcolor='red')
# Añadir una subtrama incrustada en ax (ampliar una región local)
axins = ax.inset_axes([0.15, 0.5, 0.3, 0.35])
axins.plot(x, np.sin(x), 'b-')
axins.set_xlim(3, 5)
axins.set_ylim(-1.2, 1.2)
axins.set_title('Zoomed Region')
axins.grid(True, alpha=0.3)
# Marcar la región incrustada en el gráfico principal
ax.indicate_inset_zoom(axins, edgecolor='gray')
ax.set_title('Dual Y-Axes with Inset Zoom', fontsize=14)
plt.show()
Preguntas frecuentes
El gráfico no se muestra
Verifique si se ha llamado aplt.show()。
En backends no interactivos (como Agg) debe llamarse explícitamenteshow()。
En Jupyter Notebook, use%matplotlib inlineel comando mágico para asegurar que los gráficos se muestren incrustados.
Demasiadas marcas o en orden incorrecto
La causa común es pasar una lista de cadenas como datos (en lugar de valores numéricos o fechas/horas).
Matplotlib trata las listas de cadenas como variables categóricas; cada valor único obtiene un tick, ordenados por aparición.
Solución: convertir las cadenas en valores numéricos, por ejemplonp.asarray(data, dtype='float')onp.asarray(data, dtype='datetime64[s]')。
El chino se muestra como cuadrados
La fuente predeterminada de Matplotlib (DejaVu Sans) no incluye glifos chinos; se debe especificar una fuente compatible con chino.
Establezcaplt.rcParams['font.sans-serif'] = ['SimHei', 'Arial Unicode MS', ...]y asegúrese de que la fuente correspondiente esté instalada en el sistema.
Etiquetas superpuestas o truncadas
Se recomienda al crear la Figure usarlayout='constrained'olayout='compressed'el parámetro, que maneja automáticamente la superposición de etiquetas, títulos y leyendas.
También se puede usarfig.tight_layout()ofig.subplots_adjust()para ajustar manualmente.
Diferencia entre pcolor y pcolormesh
pcolor()Crea una PolyCollection, más lento de renderizar pero más preciso.
pcolormesh()Crea un QuadMesh, más rápido de renderizar, y es la opción recomendada en la mayoría de los escenarios.
Para cuadrículas muy grandes,pcolorfast()use imshow para dibujar; es el más rápido pero con la menor precisión.
Recursos relacionados
- Sitio web oficial de Matplotlib: matplotlib.org
- Galería oficial: matplotlib.org/stable/gallery/index.html
- Referencia completa de la API: matplotlib.org/stable/api/index.html
- Guía de instalación: matplotlib.org/stable/install/index.html
- Guía de contribución: matplotlib.org/stable/devel/index.html