Saltar al contenido

Manual de introducción a matplotlib.pyplot (IX): Miscelánea

Este artículo se actualizó el 2020/04/18 para usar las últimas versiones de las bibliotecas que se comentan.

Esto pretende ser un tutorial del módulo pyplot de la librería matplotlib. El tutorial lo dividiremos de la siguiente forma (que podrá ir cambiando a medida que vayamos avanzando).

  1. Primeros pasos
  2. Creando ventanas, manejando ventanas y configurando la sesión
  3. Configuración del gráfico
  4. Tipos de gráfico I
  5. Tipos de gráfico II
  6. Tipos de gráfico III
  7. Tipos de gráfico IV
  8. Texto y anotaciones (arrow, annotate, table, text…)
  9. Herramientas estadísticas (acorr, cohere, csd, psd, specgram, spy, xcorr, …)
  10. Eventos e interactividad (connect, disconnect, ginput, waitforbuttonpress…)
  11. Miscelánea

[Para este tutorial se ha usado python 3.7.6, ipython 7.13.0, numpy 1.17.2 y matplotlib 3.1.1]

[DISCLAIMER: Muchos de los gráficos que vamos a representar no tienen ningún sentido físico y los resultados solo pretenden mostrar el uso de la librería].

En todo momento supondremos que se ha iniciado la sesión y se ha hecho:

import matplotlib.pyplot as plt
import numpy as np
plt.ion()

Después de dar un repaso por toda la librería, obviando algunas funciones estadísticas y eventos, vamos a acabar este tutorial viendo algunas funciones que sirven para leer y guardar imágenes.

Imaginad que queréis usar una imagen de fondo, por ejemplo vuestro nombre, o las siglas de creative commons o una foto,…, en vuestros gráficos. Para el ejemplo que vamos a ver a continuación vamos a usar la imagen que está en el siguiente enlace como fondo (guardadala en local para poder leerla).

background = plt.imread('Cc.large.png')  # Leemos la imagen que queremos usar de fondo, lo que escribáis entre comillas es la ruta a la imagen
x = np.arange(background.shape[1])  # Definimos valores de x
y = np.random.rand(background.shape[0]) * background.shape[0]  # Definimos valores de y
plt.plot(x, y)  # Dibujamos la serie
plt.imshow(background, alpha = 0.25)  # Creamos el fondo con una transparencia del 0.10 (1 es opaco y 0 es transparente)

El resultado es el siguiente:

Con plt.imread lo que hacemos es leer una imagen y convertirla en un numpy array que más tarde podemos utilizar como queramos (en este caso, como fondo para la imagen). Con plt.imshow lo que hemos hecho es mostrar la imagen en pantalla. Por último, que sepáis que también existe plt.imsave, que permite guardar un numpy array como una imagen.

Por último, pero no por ello menos importante, quedaría el uso plt.savefig, que nos permite guardar cualquiera de las figuras que hemos ido creando a lo largo de todo el tutorial. Para el anterior caso, solo tenemos que añadir lo siguiente al código de más arriba:

plt.savefig('imagen_con_fondo_cc.png')

La función plt.savefig permite definir la resolución de la imagen, el formato de salida (por defecto, matplotlib solo permite los formatos png, eps, ps, png y svg, si queremos usar otros formatos haría falta instalar otras librerías (o bibliotecas) como PIL), la orientación de la figura,…

Y esto es todo, de momento, espero que os haya resultado útil por lo menos alguna cosa. Lástima no disponer de más tiempo para poder ver todo lo anterior con más profundidad pero espero que, por lo menos, si no conocíais esta maravillosa librería/biblioteca 🙂 os haya servido para adentraros un poco en ella y poder profundizar más por vuestra cuenta.

Este tutorial es un homenaje póstumo a John D. Hunter, creador de Matplotlib y recientemente fallecido 🙁

Hasta siempre, John.

P.D.: Por favor, si veis errores, conceptos erróneos o tenéis alguna crítica, podéis usar los comentarios para hacérnosla llegar y que la podamos corregir.

6 comentarios en «Manual de introducción a matplotlib.pyplot (IX): Miscelánea»

  1. Pingback: Bitacoras.com

  2. Pingback: Manual de introducción a matplotlib.pyplot (VII): Tipos de gráfico (IV) | Pybonacci

  3. Hola, quería saber si hay algun formato para guardar la figura y que luego se pueda abrir en modo interactivo sin necesidad de lanzar el script.

    1. Con el menú que viene por defecto no. Depende de lo que quieras hacer quizá te podría valer guardar en svg o ps.
      Aunque no sé si he entendido muy bien la pregunta. Una vez que guardas la figura aplicas unos parámetros para tener una copia estática (hardcopy).

      1. Me refiero a hacer zoom a una figura con varios paneles y ejes compartidos sin que se pixele la imagen, hardcopy creo que no es lo que necesito y no se si hay otra posibilidad. Gracias

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

fifty four + = 60

Pybonacci