Введение
В визуализации данных важно точно подписывать деления на осях. EngFormatter в Matplotlib - это класс, который позволяет подписывать деления на оси с использованием инженерной записи. Инженерная запись - это математическое представление чисел, использующее степени десяти с кратностью трех. Это краткий способ выражать большие или маленькие числа, которые трудно читать или записывать в стандартной записи. В этом практическом занятии мы научимся подписывать деления на оси с использованием инженерной записи.
Советы по работе с ВМ
После запуска ВМ кликните в верхнем левом углу, чтобы переключиться на вкладку Notebook и получить доступ к Jupyter Notebook для практики.
Иногда вам может потребоваться подождать несколько секунд, пока Jupyter Notebook загрузится. Валидация операций не может быть автоматизирована из-за ограничений Jupyter Notebook.
Если вы сталкиваетесь с проблемами при обучении, не стесняйтесь обращаться к Labby. Оставьте отзыв после занятия, и мы оперативно решим проблему для вас.
Импортировать необходимые библиотеки
Первым шагом является импорт необходимых библиотек. В этом практическом занятии мы будем использовать Matplotlib, NumPy и EngFormatter.
import matplotlib.pyplot as plt
import numpy as np
from matplotlib.ticker import EngFormatter
Создать искусственные данные
Нам нужно создать некоторые искусственные данные для построения графика. В этом практическом занятии мы построим логарифм частоты (в герцах) по отношению к логарифму мощности (в ваттах). Мы будем использовать библиотеку numpy для генерации данных.
## Fixing random state for reproducibility
prng = np.random.RandomState(19680801)
## Create artificial data to plot.
## The x data span over several decades to demonstrate several SI prefixes.
xs = np.logspace(1, 9, 100)
ys = (0.8 + 0.4 * prng.uniform(size=100)) * np.log10(xs)**2
Создать фигуру и подграфики
Нам нужно создать фигуру и подграфики для отображения данных. В этом практическом занятии мы создадим два подграфика, расположенных рядом.
## Figure width is doubled (2*6.4) to display nicely 2 subplots side by side.
fig, (ax0, ax1) = plt.subplots(nrows=2, figsize=(7, 9.6))
for ax in (ax0, ax1):
ax.set_xscale('log')
Подписать деления с использованием инженерной записи
Теперь мы будем подписывать деления на оси x с использованием инженерной записи. В первом подграфике мы будем использовать стандартные настройки, а во втором подграфике мы будем использовать параметры places и sep, чтобы указать количество цифр после десятичной точки и разделитель между числом и префиксом/единицей.
## Demo of the default settings, with a user-defined unit label.
ax0.set_title('Full unit ticklabels, w/ default precision & space separator')
formatter0 = EngFormatter(unit='Hz')
ax0.xaxis.set_major_formatter(formatter0)
ax0.plot(xs, ys)
ax0.set_xlabel('Frequency')
## Demo of the options `places` (number of digit after decimal point) and
## `sep` (separator between the number and the prefix/unit).
ax1.set_title('SI-prefix only ticklabels, 1-digit precision & '
'thin space separator')
formatter1 = EngFormatter(places=1, sep="\N{THIN SPACE}") ## U+2009
ax1.xaxis.set_major_formatter(formatter1)
ax1.plot(xs, ys)
ax1.set_xlabel('Frequency [Hz]')
Показать график
Теперь мы покажем график с использованием функции plt.show().
plt.tight_layout()
plt.show()
Резюме
В этом практическом занятии мы узнали, как подписывать деления на оси с использованием инженерной записи. Мы использовали класс EngFormatter в Matplotlib для подписания делений на оси x графика. Мы также узнали, как создавать подграфики и настраивать подписи делений с использованием параметров places и sep класса EngFormatter. Инженерная запись - это краткий и понятный способ выражать большие или маленькие числа, которые трудно читать или записывать в стандартной записи.