Настройка трансформации сетки с использованием Matplotlib

PythonPythonBeginner
Практиковаться сейчас

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

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

Введение

В этом практическом занятии представлен пошаговый гайд по использованию GridHelperCurveLinear для определения пользовательских сеток и делений шкалы путём применения преобразования к сетке. Для создания пользовательских сеток и делений шкалы мы будем использовать библиотеку Matplotlib для Python.

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

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

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

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

Импортировать необходимые библиотеки

Первым шагом является импорт необходимых библиотек, в том числе matplotlib.pyplot, numpy, ExtremeFinderSimple, MaxNLocator и GridHelperCurveLinear.

import matplotlib.pyplot as plt
import numpy as np
from mpl_toolkits.axisartist.axislines import Axes
from mpl_toolkits.axisartist.grid_finder import (ExtremeFinderSimple, MaxNLocator)
from mpl_toolkits.axisartist.grid_helper_curvelinear import GridHelperCurveLinear

Определить функции преобразования

Вторым шагом является определение функций преобразования. В этом примере мы будем использовать функцию tr для преобразования значений оси x и оставить значения оси y неизменными. Функция inv_tr будет использоваться для обратного преобразования.

def tr(x, y):
    return np.sign(x)*abs(x)**.5, y

def inv_tr(x, y):
    return np.sign(x)*x**2, y

Определить GridHelperCurveLinear

Третий шаг - это определить экземпляр GridHelperCurveLinear. Мы будем использовать функции преобразования, определённые на втором шаге, для преобразования сетки. Также мы установим grid_locator1 и grid_locator2 в MaxNLocator(nbins=6), чтобы увеличить плотность делений шкалы.

grid_helper = GridHelperCurveLinear(
    (tr, inv_tr),
    extreme_finder=ExtremeFinderSimple(20, 20),
    grid_locator1=MaxNLocator(nbins=6), grid_locator2=MaxNLocator(nbins=6))

Определить оси и отобразить изображение

Четвёртым шагом является определение осей с использованием экземпляра grid_helper, созданного на третьем шаге. Также мы будем отображать изображение с использованием функции imshow.

ax1 = fig.add_subplot(axes_class=Axes, grid_helper=grid_helper)
ax1.imshow(np.arange(25).reshape(5, 5), vmax=50, cmap=plt.cm.gray_r, origin="lower")

Создать фигуру

Последним шагом является создание фигуры с использованием функции plt.figure. Мы установим размер фигуры в (7, 4) и вызовем функцию curvelinear_test1, созданную на шагах 2-4.

if __name__ == "__main__":
    fig = plt.figure(figsize=(7, 4))
    curvelinear_test1(fig)
    plt.show()

Резюме

В этом практическом занятии мы узнали, как использовать GridHelperCurveLinear для определения пользовательских сеток и делений шкалы путём применения преобразования к сетке. Мы использовали библиотеку Matplotlib для Python, чтобы создать пользовательскую сетку и деления шкалы для матрицы 5x5, отображаемой на осях.