12 August 2020

Matplotlib и Юпитер: немного о магии

Решение задачи двух осей и четырех графиков всем хорошо, кроме как внешним видом - графики получились маленькие:

Варианта разрешить этот недостаток ровно два - явно поменять размер графиков или использовать магические (magic) команды. Рассмотрим их по порядку.

Чтобы изменить размер графика надо изменить параметр figsize у холста.
Если делать это без сохранения объекта холста ( figure ) то вызов будет такой:

plt.rcParams["figure.figsize"] = [10,6]

Здесь я изменил размеры по горизонтали и вертикали на 10 и 6 соответственно, когда по умолчанию эти размеры 6.4 и 4.8.
В случае использования объекта холста можно сделать это прямо при вызове subplots вот так:

fig, ( ax_up, ax_btm) = plt.subplots(2,1,figsize=(10,6))

Делать это надо до вызовов рисования. Результат будет один и тот же - график увеличится в размерах:

Эмпирическим путем можно подобрать нужный размер графика.
Второй способ подразумевает использование магических команд, которые начинаются с символа процента, для указаний работы реализации. Для библиотеки Matplotlib они начинаются так:

%matplotlib [что-то тут]

Два основных варианта это inline и notebook, то есть так:

%matplotlib inline
%matplotlib notebook


Случай inline - это как если бы мы ничего не указывали - неинтерактивный график. Нужен разве что если мы использовали notebook и хотим вернуться обратно.
А вот notebook добавляет интерактивности:

 Как можно видеть сверху появился заголовок Figure 1 с кнопкой. Эта кнопка - выключает интерактивность и если ее выключить, то более уже к ней не вернуться.

Внизу справа ( на нее показывет красная стрелка ) - символ в виде треугольника - это для изменения размеров - если на на него встать, нажать мышь и двигать, то размер будет меняться.
Внизу слева - меню управления.
Слева направо:

  • Символ в виде дома - вернуться к исходному отображению ( Home )
  • Стрелка влево - вернуться на шаг изменения назад ( Back, аналог Undo )
  • Стрелка вправо - сделать изменени вперед ( после возравщения на шаг назад, Forward, аналог Redo )
  • Крест со стрелками - смещение ( Pan )
  • Пустой квадрат - масштаб ( Zoom )
  • Символ дискеты - сохранить изображение ( Download )


Изменение размеров и меню слева работают незвисимо - то есть после изменения размера кнопка назад не вернет его предыдущее значение.
У левого меню основные операции это смещение и масштаб - их можно отменять или возвращать.
Для изменения масштаба надо выбрать прямоугльник и пойти на нужный график - там курсор превратится в крестик, можно выбрать прямоугольную область и она будет показана во весь график: 

Вот график после такого масштабирования:

При помощи сдвига можно сдвинуть график к интересующей его части - тогда курсор меняется на руку и при удержании кнопки мыши и ее перемещении двигается и сам график:

В обоих случаях - масштаба и сдвига - значения осей автоматически меняются. Стрелками влево/вправо можно двигаться между приложенными изменениями отображения, а при нажатии на домик - вернуться к оригинальному.

Сохранение изображения оиткрывает картинку в новой вкладке в браузере и его можно сохранить как файл. Одноко оно работает с ошибками - прямо после масштабирования и/или сдвига картинка показывается криво:

Исправить это можно слегка изменив размер картинки иконкой справа  и снова нажав сохранение:

Таким образом в режиме notebook можно интерактивно просматривать более детально части графиков, хотя он и отстает от возможностей Plotly.

Дополнительно можно посмотеть информацию тут Using matplotlib in jupyter notebooks - comparing methods and some tips
 

No comments:

Post a Comment