Matplotlib Tool Manager

Beginner

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

Einführung

In diesem Tutorial wird gezeigt, wie Sie die Toolbar ändern, Tools erstellen, hinzufügen und entfernen, indem Sie matplotlib.backend_managers.ToolManager verwenden.

Tipps für die VM

Nachdem die VM gestartet ist, klicken Sie in der oberen linken Ecke, um zur Registerkarte Notebook zu wechseln und Jupyter Notebook für die Übung zu öffnen.

Manchmal müssen Sie einige Sekunden warten, bis Jupyter Notebook vollständig geladen ist. Die Validierung von Vorgängen kann aufgrund von Einschränkungen in Jupyter Notebook nicht automatisiert werden.

Wenn Sie bei der Lernphase Probleme haben, können Sie Labby gerne fragen. Geben Sie nach der Sitzung Feedback, und wir werden das Problem für Sie prompt beheben.

Auflisten aller von ToolManager gesteuerten Tools

Der erste Schritt besteht darin, alle von ToolManager gesteuerten Tools aufzulisten. Dies kann durch Erstellen eines benutzerdefinierten Tools namens ListTools erreicht werden. Die Klasse ListTools erbt von ToolBase. Die trigger()-Methode von ListTools druckt den Namen, die Beschreibung und die Tastenkombination aller verfügbaren Tools.

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

    def trigger(self, *args, **kwargs):
        print('_' * 80)
        fmt_tool = "{:12} {:45} {}".format
        print(fmt_tool('Name (id)', 'Toolbeschreibung', 'Tastenkombination'))
        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("Aktive Schaltertools")
        print(fmt_active_toggle("Gruppe", "Aktiv"))
        print('-' * 80)
        for group, active in self.toolmanager.active_toggle.items():
            print(fmt_active_toggle(group, active))

Zeige Linien mit einer angegebenen GID

Der zweite Schritt besteht darin, ein benutzerdefiniertes Tool namens GroupHideTool zu erstellen. Die Klasse GroupHideTool erbt von ToolToggleBase. Die set_lines_visibility()-Methode von GroupHideTool setzt die Sichtbarkeit aller Linien im Graphen, die die angegebene GID haben, je nachdem, ob das Tool aktiviert oder deaktiviert ist, entweder auf True oder False.

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()

Füge benutzerdefinierte Tools hinzu

Der dritte Schritt besteht darin, die in den Schritten 1 und 2 erstellten benutzerdefinierten Tools hinzuzufügen. Dies kann durch Aufruf der add_tool()-Methode des ToolManager erreicht werden. Wir fügen die Tools ListTools und GroupHideTool dem ToolManager hinzu. Wir fügen auch das Show-Tool der Toolbar hinzu, die mit der add_tool()-Methode von Toolbar erstellt wurde.

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)

Entferne Tools

Der vierte Schritt besteht darin, die Schaltfläche „Vorwärts“ von der Toolbar zu entfernen. Wir können dies erreichen, indem wir die remove_tool()-Methode des ToolManager aufrufen.

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

Zusammenfassung

In diesem Tutorial haben wir gelernt, wie man die Toolbar modifiziert, benutzerdefinierte Tools erstellt, Tools hinzufügt und Tools entfernt, indem man matplotlib.backend_managers.ToolManager verwendet. Wir haben ein benutzerdefiniertes Tool namens ListTools erstellt, das alle von ToolManager gesteuerten Tools auflistet. Wir haben auch ein benutzerdefiniertes Tool namens GroupHideTool erstellt, das die Sichtbarkeit aller Linien im Graphen, die die angegebene GID haben, je nachdem, ob das Tool aktiviert oder deaktiviert ist, entweder auf True oder False setzt. Schließlich haben wir die benutzerdefinierten Tools zum ToolManager hinzugefügt, das Show-Tool zur Toolbar hinzugefügt und die Schaltfläche „Vorwärts“ von der Toolbar entfernt.