Техники визуализации данных в Matplotlib

Beginner

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

Введение

Matplotlib - это мощная библиотека визуализации данных на Python. Она предоставляет различные инструменты для создания широкого спектра графиков, диаграмм и карт. Одной из наиболее мощных функций Matplotlib является ее способность масштабировать данные. В этом практическом занятии мы познакомим вас с AsinhScale, который представляет собой преобразование, позволяющее отображать величины, охватывающие очень широкий динамический диапазон, включая как положительные, так и отрицательные значения.

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

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

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

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

Это Guided Lab, который предоставляет пошаговые инструкции, чтобы помочь вам учиться и практиковаться. Внимательно следуйте инструкциям, чтобы выполнить каждый шаг и получить практический опыт. Исторические данные показывают, что это лабораторная работа уровня средний с процентом завершения 80%. Он получил 100% положительных отзывов от учащихся.

Установка Matplotlib

Прежде чем начать, убедитесь, что Matplotlib установлен. Вы можете установить его с помощью команды pip следующим образом:

pip install matplotlib

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

Для использования AsinhScale нам необходимо импортировать библиотеку Matplotlib и библиотеку numpy. Numpy - это мощная библиотека для численных вычислений в Python, которая часто используется совместно с Matplotlib.

import matplotlib.pyplot as plt
import numpy as np

Создание примера данных

Прежде чем мы сможем построить график данных с использованием AsinhScale, нам необходимо создать некоторые примеры данных. Мы создадим простую линейную диаграмму с использованием метода linspace из библиотеки numpy.

## Prepare sample values for variations on y=x graph:
x = np.linspace(-3, 6, 500)

Сравнение поведения "symlog" и "asinh" на примере графика y=x

Мы сравним поведение "symlog" и "asinh" на примере графика y=x. Мы построим один и тот же график дважды, один раз с использованием "symlog", а другой раз с использованием "asinh".

fig1 = plt.figure()
ax0, ax1 = fig1.subplots(1, 2, sharex=True)

ax0.plot(x, x)
ax0.set_yscale('symlog')
ax0.grid()
ax0.set_title('symlog')

ax1.plot(x, x)
ax1.set_yscale('asinh')
ax1.grid()
ax1.set_title('asinh')

Сравнение графиков "asinh" с разными параметрами масштаба "linear_width"

Теперь мы сравним графики "asinh" с разными параметрами масштаба "linear_width". Мы построим три графика с разными значениями "linear_width".

fig2 = plt.figure(layout='constrained')
axs = fig2.subplots(1, 3, sharex=True)
for ax, (a0, base) in zip(axs, ((0.2, 2), (1.0, 0), (5.0, 10))):
    ax.set_title(f'linear_width={a0:.3g}')
    ax.plot(x, x, label='y=x')
    ax.plot(x, 10*x, label='y=10x')
    ax.plot(x, 100*x, label='y=100x')
    ax.set_yscale('asinh', linear_width=a0, base=base)
    ax.grid()
    ax.legend(loc='best', fontsize='small')

Сравнение масштабирования "symlog" и "asinh" для двумерных случайных чисел, распределенных по Коши

Наконец, мы сравним масштабирование "symlog" и "asinh" для двумерных случайных чисел, распределенных по Коши. Мы построим один и тот же график дважды, один раз с использованием "symlog", а другой раз с использованием "asinh".

fig3 = plt.figure()
ax = fig3.subplots(1, 1)
r = 3 * np.tan(np.random.uniform(-np.pi / 2.02, np.pi / 2.02,
                                 size=(5000,)))
th = np.random.uniform(0, 2*np.pi, size=r.shape)

ax.scatter(r * np.cos(th), r * np.sin(th), s=4, alpha=0.5)
ax.set_xscale('asinh')
ax.set_yscale('symlog')
ax.set_xlabel('asinh')
ax.set_ylabel('symlog')
ax.set_title('2D Cauchy random deviates')
ax.set_xlim(-50, 50)
ax.set_ylim(-50, 50)
ax.grid()

Резюме

В этом практическом занятии был представлен AsinhScale в Matplotlib, который представляет собой преобразование, позволяющее строить графики для величин, охватывающих очень широкий динамический диапазон, включающий как положительные, так и отрицательные значения. Мы узнали, как создавать примеры данных и как строить графики с использованием "symlog" и "asinh". Мы также узнали, как сравнивать графики "asinh" с разными параметрами масштаба и как сравнивать масштабирование "symlog" и "asinh" для двумерных случайных чисел, распределенных по Коши.