Matplotlib Tool Manager

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

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом руководстве показано, как изменить панель инструментов, создавать инструменты, добавлять инструменты и удалять инструменты с использованием matplotlib.backend_managers.ToolManager.

Советы по работе с ВМ

После завершения запуска ВМ щелкните в левом верхнем углу, чтобы переключиться на вкладку Ноутбук и получить доступ к Jupyter Notebook для практики.

Иногда вам может потребоваться подождать несколько секунд, пока Jupyter Notebook не загрузится полностью. Валидация операций не может быть автоматизирована из-за ограничений в Jupyter Notebook.

Если вы сталкиваетесь с проблемами во время обучения, не стесняйтесь обращаться к Labby. Оставьте отзыв после занятия, и мы оперативно решим проблему для вас.

Перечислить все инструменты, контролируемые ToolManager

Первым шагом является перечисление всех инструментов, контролируемых ToolManager. Это можно сделать, создав пользовательский инструмент под названием ListTools. Класс ListTools наследуется от ToolBase. Метод trigger() класса ListTools выводит имя, описание и клавишу для всех доступных инструментов.

class ListTools(ToolBase):
    """List all the tools controlled by the `ToolManager`."""
    default_keymap = 'm'  ## сочетание клавиш для быстрого доступа
    description = 'List Tools'

    def trigger(self, *args, **kwargs):
        print('_' * 80)
        fmt_tool = "{:12} {:45} {}".format
        print(fmt_tool('Name (id)', 'Tool description', 'Keymap'))
        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("Active Toggle tools")
        print(fmt_active_toggle("Group", "Active"))
        print('-' * 80)
        for group, active in self.toolmanager.active_toggle.items():
            print(fmt_active_toggle(group, active))

Показать линии с заданным gid

Вторым шагом является создание пользовательского инструмента под названием GroupHideTool. Класс GroupHideTool наследуется от ToolToggleBase. Метод set_lines_visibility() класса GroupHideTool назначает видимость всех линий на графике, имеющих указанный gid, либо True, либо 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()

Добавить пользовательские инструменты

Третий шаг - добавить пользовательские инструменты, созданные нами на шагах 1 и 2. Это можно сделать, вызвав метод add_tool() объекта ToolManager. Мы добавляем инструменты ListTools и GroupHideTool в ToolManager. Также добавляем инструмент Show в Toolbar, который был создан с использованием метода add_tool() объекта 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)

Удалить инструменты

Четвёртым шагом является удаление кнопки forward из Toolbar. Это можно сделать, вызвав метод remove_tool() объекта ToolManager.

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

Резюме

В этом уроке мы узнали, как модифицировать Toolbar, создавать пользовательские инструменты, добавлять инструменты и удалять инструменты с использованием matplotlib.backend_managers.ToolManager. Мы создали пользовательский инструмент под названием ListTools, который перечисляет все инструменты, контролируемые ToolManager. Также создали пользовательский инструмент под названием GroupHideTool, который назначает видимость всех линий на графике, имеющих указанный gid, либо True, либо False, в зависимости от того, включен ли инструмент или нет. Наконец, мы добавили пользовательские инструменты в ToolManager, добавили инструмент Show в Toolbar и удалили кнопку forward из Toolbar.