Introducción
En este laboratorio, aprenderemos a usar la biblioteca Matplotlib para crear y modificar ventanas de gráficos. También exploraremos cómo personalizar la interfaz gráfica de usuario (GUI) accediendo a los widgets GTK subyacentes.
Consejos sobre la máquina virtual (VM)
Una vez que se haya iniciado la VM, haga clic en la esquina superior izquierda para cambiar a la pestaña Cuaderno y acceder a Jupyter Notebook para practicar.
A veces, es posible que tenga que esperar unos segundos a que Jupyter Notebook termine de cargarse. La validación de las operaciones no se puede automatizar debido a las limitaciones de Jupyter Notebook.
Si tiene problemas durante el aprendizaje, no dude en preguntar a Labby. Deje sus comentarios después de la sesión y lo resolveremos rápidamente para usted.
Importar bibliotecas
Primero, necesitamos importar las bibliotecas necesarias. Vamos a utilizar Matplotlib, GTK3 y el módulo Gtk del gi.repository.
import matplotlib
matplotlib.use('GTK3Agg') ## o 'GTK3Cairo'
import gi
import matplotlib.pyplot as plt
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk
Crear figura y eje
A continuación, crearemos una figura y un eje utilizando el método subplots(). Luego graficaremos dos líneas en el eje y agregaremos una leyenda para distinguirlas.
fig, ax = plt.subplots()
ax.plot([1, 2, 3], 'ro-', label='easy as 1 2 3')
ax.plot([1, 4, 9], 'gs--', label='easy as 1 2 3 squared')
ax.legend()
Acceder a la barra de herramientas y el VBox
Accederemos a los atributos de barra de herramientas y vbox del administrador del lienzo de la figura utilizando los métodos manager.toolbar y manager.vbox, respectivamente.
manager = fig.canvas.manager
toolbar = manager.toolbar
vbox = manager.vbox
Agregar un botón a la barra de herramientas
Agregaremos un botón a la barra de herramientas utilizando el módulo Gtk. Primero, creamos un botón con una etiqueta y lo conectamos a una función para imprimir un mensaje cuando se haga clic en él. Luego, creamos un elemento de herramienta, establecemos su texto de ayuda, agregamos el botón a él e insertamos el elemento de herramienta en la barra de herramientas.
button = Gtk.Button(label='Click me')
button.show()
button.connect('clicked', lambda button: print('hi mom'))
toolitem = Gtk.ToolItem()
toolitem.show()
toolitem.set_tooltip_text('Click me for fun and profit')
toolitem.add(button)
pos = 8 ## donde insertar esto en la barra de herramientas
toolbar.insert(toolitem, pos)
Agregar una etiqueta al VBox
Agregaremos una etiqueta al vbox para mostrar las coordenadas x,y del mouse cuando se arrastra sobre el eje. Primero, creamos una etiqueta con algún texto y la agregamos al vbox.
label = Gtk.Label()
label.set_markup('Drag mouse over axes for position')
label.show()
vbox.pack_start(label, False, False, 0)
Actualizar el texto de la etiqueta en el movimiento del mouse
Actualizaremos el texto de la etiqueta para mostrar las coordenadas x,y del mouse cuando se arrastra sobre el eje. Creamos una función para actualizar el texto de la etiqueta y la conectamos al evento motion_notify_event utilizando el método mpl_connect().
def update(event):
if event.xdata is None:
label.set_markup('Drag mouse over axes for position')
else:
label.set_markup(
f'<span color="#ef0000">x,y=({event.xdata}, {event.ydata})</span>')
fig.canvas.mpl_connect('motion_notify_event', update)
Mostrar la gráfica
Finalmente, mostramos la gráfica utilizando el método show().
plt.show()
Resumen
En este laboratorio, aprendimos cómo utilizar Matplotlib para crear y modificar ventanas de gráficos. También exploramos cómo personalizar la interfaz gráfica de usuario (GUI) accediendo a los widgets GTK subyacentes. Agregamos un botón a la barra de herramientas y una etiqueta al vbox, y actualizamos el texto de la etiqueta en el movimiento del mouse. También trazamos dos líneas en un eje y agregamos una leyenda para distinguirlas.