Глава 1. Введение в программирование Python
Построение разнообразных графиков на языке 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.show().
Обратите внимание на кнопки с пиктограммами в нижней строке окна графика. Дело в том, что само окно интерактивно, и, пока оно не закрыто, можно масштабировать и сдвигать график по своему усмотрению, а также сохранить изображение в файл на диске в выбранном формате (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 позволяет задавать вид осей координат: тип масштаба, пределы и другие значения.
Дополнительные материалы:
Если вы заметили неточность, ошибку или хотите поделиться своими мыслями по поводу статьи - мы рады обратной связи. Давайте вместе сделаем ресурс лучше!