Matplotlib Tool Manager

PythonPythonBeginner
Practicar Ahora

This tutorial is from open-source community. Access the source code

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

Este tutorial te mostrará cómo modificar la Barra de Herramientas, crear herramientas, agregar herramientas y eliminar herramientas utilizando matplotlib.backend_managers.ToolManager.

Consejos sobre la VM

Una vez finalizada la inicialización de la VM, haz 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 tengas que esperar unos segundos a que Jupyter Notebook termine de cargarse. La validación de operaciones no puede automatizarse debido a las limitaciones de Jupyter Notebook.

Si tienes problemas durante el aprendizaje, no dudes en preguntar a Labby. Proporciona retroalimentación después de la sesión y resolveremos rápidamente el problema para ti.

Lista todas las herramientas controladas por el ToolManager

El primer paso es listar todas las herramientas controladas por el ToolManager. Esto se puede lograr creando una herramienta personalizada llamada ListTools. La clase ListTools hereda de ToolBase. El método trigger() de ListTools imprime el nombre, la descripción y el mapeo de teclas de todas las herramientas disponibles.

class ListTools(ToolBase):
    """List all the tools controlled by the `ToolManager`."""
    default_keymap = 'm'  ## atajo de teclado
    description = 'List Tools'

    def trigger(self, *args, **kwargs):
        print('_' * 80)
        fmt_tool = "{:12} {:45} {}".format
        print(fmt_tool('Nombre (id)', 'Descripción de la herramienta', 'Mapeo de teclas'))
        print('-' * 80)
        tools = self.toolmanager.tools
        for name in sorted(tools):
            if not tools[name].description:
                continue
            keys = ', '.join(sorted(self.toolmanager.get_tool_keymap(name)))
            print(fmt_tool(name, tools[name].description, keys))
        print('_' * 80)
        fmt_active_toggle = "{!s:12} {!s:45}".format
        print("Herramientas de conmutación activa")
        print(fmt_active_toggle("Grupo", "Activo"))
        print('-' * 80)
        for group, active in self.toolmanager.active_toggle.items():
            print(fmt_active_toggle(group, active))

Mostrar líneas con un gid dado

El segundo paso es crear una herramienta personalizada llamada GroupHideTool. La clase GroupHideTool hereda de ToolToggleBase. El método set_lines_visibility() de GroupHideTool establece la visibilidad de todas las líneas de la gráfica que tienen el gid especificado en True o False, dependiendo de si la herramienta está habilitada o deshabilitada.

class GroupHideTool(ToolToggleBase):
    """Show lines with a given gid."""
    default_keymap = 'S'
    description = 'Show by gid'
    default_toggled = True

    def __init__(self, *args, gid, **kwargs):
        self.gid = gid
        super().__init__(*args, **kwargs)

    def enable(self, *args):
        self.set_lines_visibility(True)

    def disable(self, *args):
        self.set_lines_visibility(False)

    def set_lines_visibility(self, state):
        for ax in self.figure.get_axes():
            for line in ax.get_lines():
                if line.get_gid() == self.gid:
                    line.set_visible(state)
        self.figure.canvas.draw()

Agregar herramientas personalizadas

El tercer paso es agregar las herramientas personalizadas que creamos en los pasos 1 y 2. Esto se puede lograr llamando al método add_tool() del ToolManager. Agregamos las herramientas ListTools y GroupHideTool al ToolManager. También agregamos la herramienta Show a la Toolbar, que se creó utilizando el método add_tool() de Toolbar.

fig.canvas.manager.toolmanager.add_tool('List', ListTools)
fig.canvas.manager.toolmanager.add_tool('Show', GroupHideTool, gid='mygroup')
fig.canvas.manager.toolbar.add_tool('Show', 'navigation', 1)

Eliminar herramientas

El cuarto paso es eliminar el botón forward de la Toolbar. Esto se puede lograr llamando al método remove_tool() del ToolManager.

fig.canvas.manager.toolmanager.remove_tool('forward')

Resumen

En este tutorial, aprendimos cómo modificar la Barra de Herramientas, crear herramientas personalizadas, agregar herramientas y eliminar herramientas utilizando matplotlib.backend_managers.ToolManager. Creamos una herramienta personalizada llamada ListTools, que lista todas las herramientas controladas por el ToolManager. También creamos una herramienta personalizada llamada GroupHideTool, que establece la visibilidad de todas las líneas de la gráfica que tienen el gid especificado en True o False, dependiendo de si la herramienta está habilitada o deshabilitada. Finalmente, agregamos las herramientas personalizadas al ToolManager, agregamos la herramienta Show a la Toolbar y eliminamos el botón forward de la Toolbar.