Компьютерные технологии. Лекция № 8. Научная графика: Matplotlib

1.

Компьютерные технологии
Лекция № 8.
Научная графика: Matplotlib
Нижний Новгород
2022 г.

2.

Библиотека matplotlib - это библиотека 2D и 3Dграфики для
языка программирования python с помощью которой можно
создавать высококачественные рисунки различных форматов.
Matplotlib представляет собой модуль-пакет для python.
import matplotlib as mpl
# Вывод на экран текущей версии библиотеки matplotlib
print ('Current version on matplotlib library is', mpl.__version__)
Если библиотека не установлена:
pip install matplotlib или:
• Скачиваем файлы: https://github.com/matplotlib/matplotlib
• Перемещаем папку ./lib/matplotlib в папку проекта
• import matplotlib подхватит модуль из этой папки без установки

3.

Иерархическая структура рисунка в matplotlib
Главной единицей (объектом самого высокого уровня) при работе с
matplotlib является рисунок (Figure). Любой рисунок в matplotlib
имеет вложенную структуру и чем-то напоминает матрёшку.
Пользовательская работа подразумевает операции с разными
уровнями этой матрёшки:
• Рисунок (Figure)
• Область рисования (Axes)
• Координатная ось (Axis)
• Элементы рисунка (Artists)
Когда происходит отображение рисунка (figure rendering), все
элементы рисунка Artists наносятся на основу-холст (Canvas).
Большая часть из них связывается с областью рисования Axes.
Также элемент рисунка не может совместно использоваться
несколькими областями Axes или быть перемещён с одной на
другую.

4.

Pyplot
Интерфейс pyplot позволяет пользователю сосредоточиться на
выборе готовых решений и настройке базовых параметров
рисунка. Существует де-факто стандарт вызова pyplot в python:
import matplotlib.pyplot as plt
В matplotlib работает правило "текущей области" ("current axes") – все
графические элементы наносятся на текущую область рисования.
Самым главным объектом в matplotlib является рисунок Figure.
Создать рисунок в matplotlib означает задать форму, размеры и свойства
основы-холста (canvas), на котором будет создаваться будущий график.
Создать рисунок figure позволяет метод plt.figure(). После вызова любой
графической команды, то есть функции, которая создаёт какой-либо
графический объект, например, plt.scatter() или plt.plot(), всегда существует
хотя бы одна область для рисования (по умолчанию прямоугольной формы).
Чтобы результат рисования, то есть текущее состояние рисунка, отразилось
на экране, можно воспользоваться командой plt.show(). Будут показаны все
рисунки (figures), которые были созданы.

5.

Pyplot

6.

Pyplot

7.

Элементы рисунка Artists
• Область рисования Axes
– Заголовок области рисования -> plt.title();
• Ось абсцисс Xaxis
– Подпись оси абсцисс OX -> plt.xlabel();
• Ось ординат Yaxis
– Подпись оси ординат OY -> plt.ylabel();
• Легенда -> plt.legend()
• Цветовая шкала -> plt.colorbar()
– Подпись горизонтальной оси абсцисс OX > cbar.ax.set_xlabel();
– Подпись вертикальной оси ординат OY > cbar.ax.set_ylabel();
• Деления на оси абсцисс OX -> plt.xticks()
• Деления на оси ординат OY -> plt.yticks()

8.

Элементы рисунка Artists

9.

Элементы рисунка Artists

10.

Элементы рисунка Artists

11.

Свойства графических элементов
Параметры, которые определяют свойства в различных
графических командах, обычно имеют одинаковый синтаксис, то
есть называются одинаково. Стандартным способом задания
свойств какого либо создаваемого объекта (или методу) является
передача по ключу: ключ=значение. Наиболее часто встречаемые
названия параметров изменения свойств графических объектов
перечислены ниже:
• color/colors/c - цвет;
• linewidth/linewidths - толщина линии;
• linestyle - тип линии;
• alpha - степень прозрачности (от полностью прозрачного 0 до
непрозрачного 1);
• fontsize - размер шрифта;
• marker - тип маркера;
• s - размер маркера в методе plt.scatter(только цифры);
• rotation - поворот строки на X градусов.

12.

Свойства графических элементов
Принято,
что
для
передачи
кортежа
используется
переменная args, а в случае со словарём - kwargs. Если перед
переменной args указан символ "*", то все дополнительные
аргументы, переданные функции/методу, сохранятся в args в
виде кортежа. Если перед args будет указан символ "**", то все
дополнительные параметры будут рассматриваться как пары
"ключ - значение" в словаре.

13.

Свойства графических элементов

14.

Свойства графических элементов

15.

Основные графические команды
Графические команды - это функции, которые, принимая
некоторые параметры, возвращают какой-то графический
результат. Это может быть текст, линия, график, диаграмма и др.
Простые команды:
• plt.scatter() - маркер или точечное рисование;
• plt.plot() - ломаная линия;
• plt.text() - нанесение текста;
Диаграммы:
• plt.bar(), plt.barh(), plt.barbs(), broken_barh() - столбчатая
диаграмма;
• plt.hist(), plt.hist2d(), plt.hlines - гистограмма;
• plt.pie() - круговая диаграмма;
• plt.boxplot() - "ящик с усами" (boxwhisker);
• plt.errorbar() - оценка погрешности, "усы".

16.

Основные графические команды
Изображения в изолиниях:
• plt.contour() - изолинии;
• plt.contourf() - изолинии с послойной окраской;
Отображения:
• plt.pcolor(), plt.pcolormesh() - псевдоцветное изображение
матрицы (2D массива);
• plt.imshow() - вставка графики (пиксели + сглаживание);
• plt.matshow() - отображение данных в виде квадратов.
Заливка:
• plt.fill() - заливка многоугольника;
• plt.fill_between(), plt.fill_betweenx() - заливка между двумя
линиями;
Векторные диаграммы:
• plt.streamplot() - линии тока;
• plt.quiver() - векторное поле.

17.

Основные графические команды

18.

Диаграммы

19.

Диаграммы

20.

Диаграммы

21.

Методы изолиний

22.

Методы отображений

23.

Методы отображений

24.

Методы заливки

25.

Методы заливки

26.

Векторные диаграммы

27.

Пример:histogram_demo_multihist.py

28.

Трехмерная графика
Все классы для работы с трехмерными графиками находятся в
пакете mpl_toolkits.mplot3d. Для того, чтобы нарисовать трехмерный график, в
первую очередь надо создать трехмерные оси. Чтобы их создать, нужно создать
экземпляр класса mpl_toolkits.mplot3d.Axes3D, конструктор которого ожидает
как минимум один параметр - экземпляр класса matplotlib.figure.Figure,
который, в свою очередь, можно создать вызовом pylab.figure().

29.

Трехмерная графика
Будем использовать следующую функцию, от двух координат.
Для начала нужно подготовить данные для рисования. Нам понадобятся три
двумерные матрицы: матрицы X и Y будут хранить координаты сетки точек, в
которых будет вычисляться приведенная выше функция, а матрица Z будет
хранить значения этой функции в соответствующей точке.
Если мы хотим нарисовать трехмерный график на эквидистантной сетке (на
сетке, у которой расстояние между точками одинаковое), то для создания
матриц, которые будут хранить координаты, поможет функция meshgrid(). Эта
функция создает двумерные матрицы сеток по одномерным массивам.

30.

Трехмерная графика
Эта функция возвращает три двумерные матрицы: x, y, z.
Координаты x и y лежат в интервале от -10 до 10 с шагом 0.1.
Чтобы
отобразить
наши
данные,
достаточно
вызвать
метод plot_surface() экземпляра класса Axes3D, в который передадим
полученные с помощью функции makeData() двумерные матрицы.

31.

Трехмерная графика

32.

Пример: Shapes and collections

33.

Пример: scales.py

34.

Пример:line_demo_dash_control.py

35.

Пример: color_cycle_demo.py

36.

Пример: autowrap_demo.py

37.

Пример: style_sheets_reference.py

38.

Пример: 2dcollections3d_demo.py

39.

Пример: bars3d_demo.py

40.

Пример:
custom_shaded_3d_surface.py

41.

Пример: contour3d_demo3.py

42.

Пример: surface3d_demo3.py

43.

Пример: surface3d_demo2.py

44.

Пример: mixed_subplots_demo.py

45.

Пример:lorenz_attractor.py

46.

Пример: wire3d_zero_stride.py
English     Русский Правила