- 1. Установка
- 1.1. Установка в составе научных дистрибутивов
- 1.2. Немного о прочих способах установки
- Установка matplotlib и архитектура графиков / plt 1
- О Matplotlib
- Установка
- IPython и IPython QtConsole
- Архитектура matplotlib
- Слой бэкенда
- Художественный слой
- Слой сценария (pyplot)
- pylab и pyplot
- Подписывайтесь на канал в Дзене
- Незамысловатый блог
- 09.08.2009
- Пакет matplotlib. Установка, проверка, настройка
- Введение
- Установка
- Проверка
- Настройка
1. Установка
1.1. Установка в составе научных дистрибутивов
Научные дистрибутивы языка Python хороши тем, что помимо самого Python устанавливают целый вагон и маленькую тележку всяких научных полезностей. Научная графика — далеко не единственный инструмент, который может вам пригодиться, а matplotlib — вовсе не единственная библиотека, которая позволяет создавать графики. Поэтому, если вы ученый, а не разработчик, то я вам настоятельно рекомендую именно научный дистрибутив. Практически все дистрибутивы описаны в инструкциях по установке NumPy.
Учитывая, большое количество дистрибутивов и то, что мы хотим работать с графикой, то самым подходящим окажется тот дистрибутив, который предоставляет возможность работать в среде IPython, которая в свою очередь обернута в Jupyter. Jupyter организует web-интерфейс для IPython, что позволяет его запускать в обычном браузере, сам документ (который часто называют блокнотом или тетрадкой) организован в виде ячеек, каждая из которых может содержать либо код либо текст с разметкой markdown. Результат выполнения кода (которым может быть и графика), располагается под той ячейкой в которой он был выполнен.
Учитывая, что научная работа — это в основном код, графика и текст, то блокноты Jupyter — это очень удобный способ сохранить свой труд и поделиться им. Для примера, можете ознакомиться с руководством «Анатомия matplotlib» от Бенджамина Рута.
Я использую дистрибутив Python Anaconda и если вы новичок, то рекомендую начать именно с него — он бесплатен и хорошо документирован. Так же он обладает удобным менеджером пакетов conda, который позволяет очень легко обновлять имеющиеся пакеты или устанавливать недостающие.
1.2. Немного о прочих способах установки
Если вы собираетесь создавать научные программы с использованием matplotlib, то вам необходимо принять во внимание, что данная библиотека имеет довольно много обязательных и вспомогательных зависимостей. Некоторые пакеты требуют тщательного изучения лицензий под которыми они распространяются (например GhostScript). В данном случае, вас может отлично выручить любой из платных научных дистрибутивов Python, который гарантирует компенсацию всех рисков, которые могут возникнуть из-за лицензий пакетов.
Установка matplotlib в составе научного дистрибутива, является лучшей (скорее не лучшей а простейшей) альтернативой для сборки данной библиотеки из ее исходного кода и всех пакетов. Устанавливая дистрибутив, вы получаете возможность использовать его через большинство IDE (как правило в большинстве дистрибутивов вы даже можете обнаружить IDLE). В ходе разработки (проверено в Spyder и PyCharm) вы можете сами легко отследить все зависимости и использовать только те которые вам необходимы.
Установка matplotlib и архитектура графиков / plt 1
matplotlib — это библиотека, предназначенная для разработки двумерных графиков (включая 3D-представления). За последнее время она широко распространилась в научных и инженерных кругах (http://matplotlib.org):
Среди всех ее функций особо выделяются следующие:
- Простота в использовании
- Постепенное развитие и интерактивная визуализация данных
- Выражения и текст в LaTeX
- Широкие возможности по контролю графических элементов
- Экспорт в разные форматы, включая PNG, PDF, SVG и EPS
О Matplotlib
matplotlib спроектирована с целью максимально точно воссоздать среду MATLAB в плане графического интерфейса и синтаксической формы. Этот подход оказался успешным, ведь он позволил задействовать особенности уже проверенного ПО (MATLAB), распространив библиотеку в среду технологий и науки. Более того, она включает тот объем работы по оптимизации, который был проделан за много лет. Результат — простота в использовании, что особенно важно для тех, у кого нет опыта работы в этой сфере.
Помимо простоты библиотека matplotlib также унаследовала от MATLAB интерактивность. Это значит, что специалист можно вставлять команду за командой для постепенной разработки графического представления данных. Этот режим отлично подходит для более интерактивных режимов работы с Python, таких как IPython, QtConsole и Jupyter Notebook, предоставляя среду для анализа данных, где есть все, что можно найти, например в Mathematica, IDL или MATLAB.
Гений создателей этой библиотеки в использовании уже доступных, зарекомендовавших себя инструментов из области науки. И это не ограничивается лишь режимом исполнения MATLAB, но также моделями текстового представления научных выражений и символов LaTeX. Благодаря своим возможностям по представлению научных выражений LaTeX был незаменимым элементом научных публикаций и документаций, в которых требуются такие визуальные репрезентации, как интегралы, объединения и производные. А matplotlib интегрирует этот инструмент для улучшения качества отображения.
Не стоит забывать о том, что matplotlib — это не отдельное приложение, а библиотека такого языка программирования, как Python. Поэтому она на полную использует его возможности. Matplotlib воспринимается как графическая библиотека, позволяющая программными средствами настраивать визуальные элементы, из которых состоят графики, и управлять ими. Способность запрограммировать визуальное представление позволяет управлять воспроизводимостью данных в разных средах особенно при изменениях или обновлениях.
А поскольку matplotlib — это библиотека Python, она позволяет на полную использовать потенциал остальных библиотек языка. Чаще всего работе с анализом данных matplotlib взаимодействует с набором других библиотек, таких как NumPy и pandas, но можно добавлять и другие.
Наконец, графическое представление из этой библиотеки можно экспортировать в самые распространенные графические форматы (PNG и SVG) и затем использовать в других приложениях, документах, в сети и так далее.
Установка
Есть много вариантов установки matplotlib. Если это дистрибутив пакетов, такой как Anaconda или Enthought Canopy, то процесс очень простой. Например, используя пакетный менеджер conda , достаточно ввести следующее:
Если его нужно установить прямо, то команды зависят от операционной системы
В системах Debian-Ubuntu:
В macOS или Windows нужно использовать pip
IPython и IPython QtConsole
Для знакомства со всеми инструментами мира Python часто используют IPython из терминала или QtConsole. Все благодаря тому, что IPython позволяет использовать интерактивность улучшенного терминала и интегрировать графику прямо в консоль.
Для запуска сессии IPython нужно использовать следующую команду:
Если же используется Jupyter QtConsole с возможностью отображения графики вместе с командами, то нужна эта:
На экране тут же отобразится новое окно с запущенной сессией IPython.
Однако ничто не мешает использовать стандартную сессию Python. Все примеры дальше будут работать и в таком случае.
Архитектура matplotlib
Одна из основных задач, которую выполняет matplotlib — предоставление набора функций и инструментов для представления и управления Figure (так называется основной объект) вместе со всеми внутренними объектами, из которого он состоит. Но в matplotlib есть также инструменты для обработки событий и, например, анимации. Благодаря им эта библиотека способна создавать интерактивные графики на основе событий по нажатию кнопки или движению мыши.
Архитектура matplotlib логически разделена на три слоя, расположенных на трех уровнях. Коммуникация непрямая — каждый слой может взаимодействовать только с тем, что расположен под ним, но не над.
- Слой сценария
- Художественный слой
- Слой бэкенда
Слой бэкенда
Слой Backend является нижним на диаграмме с архитектурой всей библиотеки. Он содержит все API и набор классов, отвечающих за реализацию графических элементов на низком уровне.
- FigureCanvas — это объект, олицетворяющий область рисования.
- Renderer — объект, который рисует по FigureCanvas .
- Event — объект, обрабатывающий ввод от пользователя (события с клавиатуры и мыши)
Художественный слой
Средним слоем выступает художественный ( artist ). Все элементы, составляющие график, такие как название, метки осей, маркеры и так далее, являются экземплярами этого объекта. Каждый из них играет свою роль в иерархической структуре.
Есть два художественных класса: примитивный и составной.
- Примитивный — это объекты, которые представляют собой базовые элементы для формирования графического представления графика, например, Line2D, или геометрические фигуры, такие как прямоугольник круг или даже текст.
- Составные — объекты, состоящие из нескольких базовых (примитивных). Это оси, шкалы и диаграммы.
На этом уровне часто приходится иметь дело с объектами, занимающими высокое положение в иерархии: график, система координат, оси. Поэтому важно полностью понимать, какую роль они играют. Следующее изображение показывает три основных художественных (составных объекта), которые часто используются на этом уровне.
- Figure — объект, занимающий верхнюю позицию в иерархии. Он соответствует всему графическому представлению и может содержать много систем координат.
- Axes — это тот самый график. Каждая система координат принадлежит только одному объекту Figure и имеет два объекта Axis (или три, если речь идет о трехмерном графике). Другие объекты, такие как название, метки x и y , принадлежат отдельно осям.
- Axis учитывает числовые значения в системе координат, определяет пределы и управляет обозначениями на осях, а также соответствующим каждому из них текстом. Положение шкал определяется объектом Locator , а внешний вид — Formatter .
Слой сценария (pyplot)
Художественные классы и связанные с ними функции (API matplotlib) подходят всем разработчикам, особенно тем, кто работает с серверами веб-приложений или разрабатывает графические интерфейсы. Но для вычислений, в частности для анализа и визуализации данных, лучше всего подходит слой сценария. Он включает интерфейс pyplot .
pylab и pyplot
Существуют две библиотеки: pylab и pyplot . Но в чем между ними разница? Pylab — это модуль, устанавливаемый вместе с matplotlib, а pyplot — внутренний модуль matplotlib. На оба часто ссылаются.
Pylab объединяет функциональность pyplot с возможностями NumPy в одном пространстве имен, поэтому отдельно импортировать NumPy не нужно. Более того, при импорте pylab функции из pyplot и NumPy можно вызывать без ссылки на модуль (пространство имен), что похоже на MATLAB.
Пакет pyplot предлагает классический интерфейс Python для программирования, имеет собственное пространство имеет и требует отдельного импорта NumPy. В последующих материалах используется этот подход. Его же применяет большая часть программистов на Python.
Подписывайтесь на канал в Дзене
Полезный контент для начинающих и опытных программистов в канале Лента Python разработчика — Как успевать больше, делать лучше и не потерять мотивацию.
Незамысловатый блог
09.08.2009
Пакет matplotlib. Установка, проверка, настройка
Введение
matplotlib — набор дополнительных модулей (библиотек) языка Python. Предоставляет средства для построения самых разнообразных 2D графиков и диаграмм данных. Достоинства. Отличается простотой использования — для построения весьма мудреных и красочно оформленных диаграмм достаточно нескольких строк кода. При этот качество получаемых изображений более чем достаточно для их публикования. Один из выходных формата файлов — Postscript, что, соответственно, позволяет вставлять изображения в документы TeX. Предоставляет API для встраивания своих графических объектов в приложения пользователя.
Установка
Официальный сайт проекта matplotlib. Дистрибутив для Windows можно заполучить на Sourceforge. Текущая версия 0.99.0, выпущена 06 августа 2009.
Для установки необходим, разумеется, сам Python и модуль NumPy. NumPy предоставляет методы для работы с огромными многомерными массивами. Дистрибутив для Windows так же можно взять на Sourceforge. Текущая версия 1.3.0 от 05 апреля 2009.
В Windows установка и matplotlib и NumPy не должна вызвать ни каких проблем. Скачиваем и запускаем файл дистрибутива.
Проверка
После установки проверяем работоспособность. Запускаем консоль Python, вводим:
В результате должно появиться вот такое окно диаграммы:
Что было сделано? Из пакета matplotlib импортирован модуль pyplot под именем plt . Модуль pyplot содержит функции (похожие на команды) создания диаграмм и изменения свойств их элементов. Функция plot() строит прямоугольные двумерные диаграммы (графики) в координатах X — Y. Если функции plot передан один аргумент (в нашем случае — список [1,2,3] ), она рассматривает его как совокупность значений откладываемых по оси Y, тогда по оси X ему будет соответствовать автоматически сгенерированный набор чисел 0,1,2. N — 1 , где N — число элементов в переданном списке. Функция title() задает заголовок диаграммы, а функция show() выводит интерактивное окно диаграммы. В общем все очень просто. Вот только вместо заголовка диаграммы «Прямая линия» 11 прямоугольников, не настроенный matplotlib не может найти шрифты с кириллическими символами.
Настройка
Пакет matplotlib можно легко настроить через конфигурационный файл matplotlibrc . Если Python установлен в папку C:\Python26\ файл matplotlibrc находится в папке: C:\Python26\Lib\site-packages\matplotlib\mpl-data\ . Вносить изменения можно прямо здесь, но лучше скопировать файл в папку пользователя: C:\Documents and Settings\UserName\.matplotlib\ , иначе при переустановке пакета конфигурационный файл будет перезаписан. Параметры пакета задаются в файле в виде пар свойство : значение , символ # отделяет комментарий. Свойство font.family определяет тип активного шрифта по умолчанию, может принимать пять значений: serif , sans-serif , cursive , fantasy , monospace . В свою очередь свойства font.serif , font.sans-serif , font.cursive , font.fantasy , font.monospace содержат списки имен шрифтов (через запятую, в порядке уменьшения приоритета) соответствующих каждому типу. Для «русификации» matplotlib необходимо изменить имена шрифтов в списке, на имена доступных в системе шрифтов, содержащих кириллические символы. Например так:
Для корректного отображения кириллических символов так же необходимо внести небольшие изменения в код программы. Все строки, содержащие символы национальных алфавитов должны быть типа unicode . Тип строкового литерала необходимо указать явно.
В случае скрипта исходный файл должен быть в кодировке UTF-8 . Кодировку файла так же следует указать явно. Для этого в первых строках программы пишем:
Вносим изменения в файл matplotlibrc , повторяем ввод в консоле Python:
Ну вот теперь подписи диаграммы отображаются корректно:
Функции pyplot.xlabel() , pyplot.ylabel() , как легко догадаться по названию, устанавливают подписи к осям X и Y соответственно.
Пакет matplotlib можно настраивать и динамически (во время выполнения программы). В пакете определена структура matplotlib.rcParams , с которой работают как со словарем. Ключевые слова в данном случае — имена свойств файла matplotlibrc .
Настройки шрифтов через matplotlib.rcParams можно изменить например так:
В результате должно получиться вот что:
Функции pyplot.plot() можно передать произвольное число пар аргументов типов list или array (тип array определен в модуле numpy). В примере выше передана одна пара: [1,2,3,4] , [1,4,9,16] . Первый элемент каждой пары функция рассматривает как значения откладываемые по оси X, второй элемент как значения по оси Y. Соответственно для каждой пары элементов строиться своя кривая на диаграмме. После каждой пары данных может быть передан дополнительный аргумент типа string — строка форматирования, которая определяет внешний вид кривой. Формат строки позаимствован из системы Matlab. Строка включает три подстроки. Первая подстрока задает цвет графического элемента, вторая стиль маркера, третья стиль линии. В примере ‘ ro’ = ‘r’ + ‘o’ , где ‘r’ — красный, ‘o’ — кружок. По умолчанию ‘b-‘ — синяя непрерывная линия.
Немного о назначении кнопок интерактивного окна диаграммы.
(pan/zoom) предназначена для прокрутки/масштабирования диаграммы. Нажимаем на кнопку, указатель мыши приобретает вид перекрещенных стрелок. Если двигать мышь и удерживать левую кнопку — диаграмма будет прокручиваться по направлению движения указателя. Если двигать мышь и удерживать правую кнопку — масштаб диаграммы будет изменяться, при движении вверх/вправо — уменьшаться, вниз/влево — увеличиваться. При нажатых клавишах » x » и » y » перемещение/масштабирование диаграммы будет происходить по осям X и Y соответственно, при нажатой клавише Ctrl диаграмма будет изменяться так, чтобы сохранились её пропорции (aspect ratio).
при нажатии включает режим прямоугольного масштабирования. Если нажать на кнопку указатель мыши приобретет вид креста. При нажатой левой кнопки мыши на диаграмме можно выделить прямоугольную область. После освобождения кнопки масштаб диаграммы будет изменен так, чтобы выделенная область заняла как можно большую площадь диаграммы.
позволяют перемещаться по истории изменения диаграммы. Все изменения вносимые в диаграмму пользователем (масштабирование, прокрутка) запоминаются. Кнопки со стрелками позволяют перемещаться вперед/назад по имеющимся вариантам диаграммы. Кнопка с домиком возвращает диаграмму к исходному состоянию.
вызывает стандартный для системы диалог сохранения файла. Позволяет сохранить диаграмму в файл. Можно выбрать следующие форматы файла диаграммы: png , pdf , svg , eps , ps . К сожалению не работает сохранение в формате emf (модуль pyemf разработчиком больше не поддерживается). Через формат emf было очень удобно вставлять диаграммы в документы Word.