Глава 1. Введение в программирование Python

Построение графиков. Библиотека matplotlib


Построение разнообразных графиков на языке Python требует весьма небольшого кода, если обратиться за помощью к пакету matplotlib. Эта библиотека воспроизводит визуализацию данных в стиле пакета MATLAB, так что пользователи, работавшие с этим пакетом или с его общедоступной альтернативой SciLab, смогут легко перейти на использование Python. Для работы с библиотекой в первую очередь следует её установить (командная строка Windows в режиме администратора):

pip install matplotlib

Кроме того, здесь и далее нам потребуется библиотека numpy, которую также потребуется установить:

pip install numpy

Ниже представлена простейшая программа, которая строит график функции sin(x)/x на интервале от –10 до 10.



Результат:

Класс pyplot используется для отображения графиков, необходимость numpy заключается в математической обработке массивов в стиле пакета MATLAB (SciLab). Популярной особенностью MATLAB является возможность очень лаконично, без каких-либо вложенных циклов, описывать операции с векторами и матрицами. Это так же в стиле Python. Именно поэтому для удобства обработки данных здесь и далее будем пользоваться возможностями библиотеки numpy, содержащей все необходимые функции для работы с многомерными массивами. Однако это не означает, что pyplot не построит график для обычного списка Python.

Ранее говорилось, что в Python имеется функция range, которая создаёт перечисление по заданным условиям, однако только с целыми числами, что для нашего примера неприемлемо. Массив Y – это значения нашей функции. В строке 4 мы вычисляем sin(X)/X для всех значений X. Именно для такой простой записи нам потребовалась библиотека numpy. Если вы захотите поэкспериментировать и попробуете использовать синус из базовой библиотеки Python – модуля math, код в строке 4 придётся делать более громоздким, например, таким:

Y = np.array([math.sin(x)/x for x in X])

И, наконец, в строке 5 вызывается метод plot с двумя аргументами X и Y. Это единственная команда, которая самостоятельно формирует графическое окно – поле вывода графика, рассчитывает масштаб по осям координат и выводит график функции. Все настройки окна выполнены в данном случае по умолчанию, но их будет легко модифицировать по вашему усмотрению.

Если вы будете использовать iPython, график тотчас же появится на экране. Если же вы работаете в среде IDLE Python или в командной строке Python, обязательно потребуется plt.plot(X, Y).

Обратите внимание на кнопки с пиктограммами в нижней строке окна графика. Дело в том, что само окно интерактивно, и, пока оно не закрыто, можно масштабировать и сдвигать график по своему усмотрению, а так же сохраненить изображение в файл на диске в выбранном формате (png, pdf, eps, svg и др.).

Заметим, что библиотека matplotlib позволяет использовать весьма разнообразные способы графического представления данных, в том числе создавать диаграммы различного вида, трёхмерные анимированные графики, различным образом позиционировать несколько графиков на одном поле вывода, управлять отображением осей координат, и др. В нашем случае мы ограничимся обзором базовых возможностей библиотеки, которые потребуются нам для решения дальнейших задач.

Изменение цвета:
plt.plot(X, Y, 'r')

получили кривую красного цвета.

В качестве третьего аргумента возможны варианты y, m, c, r, g, b, k.

Использование маркеров для точек:
plt.plot(X, Y, 'k+')

# линия исчезнет, но появятся маркеры черного цвета в виде крестиков.

Возможны варианты ., o, x, +, *, s.

Стиль линии:
plt.plot(X, Y, '--')

# линия станет штриховой.

Возможны варианты: -, :, -., --.

Комбинация стилей
plt.plot(X, Y, 'k:o')

Третий параметр использует строковый формат вида «[цвет] [линия] [маркер]».

С точки зрения MATLAB возможности дизайна отображаемых кривых были бы исчерпаны вышеописанными примерами, но только не для Python. Замечательная особенность этого языка заключается в возможности передавать значения в функцию с явным указанием имён параметров.

plt.plot(X, Y, color='black', marker='o',linestyle='dotted')

Результат:

Порядок перечисления имён параметров и их количество не важны.

ЗАДАНИЕ:

Измените дизайн кривой так, чтобы это была зелёная штриховая линия толщиной 1.2 pt. с красными ромбовидными маркерами и тонкой синей окантовкой.

Построить несколько графиков на одном поле можно с помощью последовательных вызовов команды plot:

Библиотека matplotlib позволяет задавать вид осей координат: тип масштаба, пределы и другие значения.

Дополнительные материалы:


Если вы заметили неточность, ошибку или хотите поделиться своими мыслями по поводу статьи - мы рады обратной связи. Давайте вместе сделаем ресурс лучше!

От кого:
Ваш комментарий будет виден всем пользователям