Библиотека сайта rus-linux.net
Библиотека matplotlib
Глава 11 из книги "Архитектура приложений с открытым исходным кодом", том 2.Оригинал: matplotlib
Автор: John Hunter, Michael Droettboom
Дата публикации: 30 Апреля 2012 г.
Перевод: А.Панин
Дата перевода: 1 Июля 2013 г.
Creative Commons: Перевод был сделан в соответствие с лицензией Creative Commons. С русским вариантом лицензии можно ознакомиться здесь.
matplotlib является библиотекой для построения графиков, созданной с использованием языка программирования Python и обладающей полной поддержкой графических 2D-операций и ограниченной поддержкой 3D-операций, которая широко используется сформированным сообществом Python-разработчиков, занимающихся научными вычислениями. Библиотека предназначена для применения в широком спектре условий. С помощью нее возможно осуществить встраивание графиков в состав пользовательского интерфейса, созданного с помощью выбранного вами тулкита, при этом на сегодняшний день библиотека поддерживает возможность интерактивного создания графиков в большинстве основных операционных систем, использующих тулкиты GTK+, Qt, Tk, FLTK, wxWidgets и Cocoa. Функции библиотеки могут вызываться интерактивно с помощью командной оболочки языка Python для построения графиков с использованием простых команд процедурного типа, очень похожих на те, что используются в таких системах, как Mathematica, IDL или MATLAB. Библиотека matplotlib также может быть встроена в состав сценария, исполняемого на веб-сервере без оборудования для вывода графики с целью создания графиков в виде файлов как растровых форматов, таких, как Portable Network Graphics (PNG), так и векторных форматов, таких, как PostScript, Portable Document Format (PDF) и Scalable Vector Graphics (SVG), которые замечательно выглядят на бумаге.
11.1. Проблема ключа аппаратной защиты
История создания библиотеки matplotlib берет свое начало с попытки одного из нас (John Hunter) избавить себя и своих исследующих эпилепсию коллег от использования пропиетарного программного пакета, предназначенного для анализа электроэнцефалограмм (EcoG). Лаборатория, в которой он работал, обладала только одной лицензией на использование программного обеспечения, поэтому различные выпускники и студенты медицинских университетов, научные сотрудники с учеными степенями, интерны и исследователи по очереди использовали ключ аппаратной защиты программного обеспечения. Система MATLAB широко использовалась в рамках сообщества биомедиков для анализа и визуализации данных, поэтому John Hunter с некоторым успехом смог заменить пропиетарное программное обеспечение на версию программного обеспечения на основе системы MATLAB, которая должна была впоследствии использоваться и совершенствоваться многими исследователями. Однако, система MATLAB рассматривает мир как массив чисел с плавающей точкой и сложность реальных медицинских записей состояния больных эпилепсией пациентов с множеством данных условий (CT, MRI, ECoG, EEG) обусловила хранение данных на различных серверах ввиду исчерпания возможностей системы MATLAB в качестве системы управления данными. Убедившись в непригодности системы MATLAB для выполнения поставленной задачи, John Hunter начал работу над новым приложением на языке Pyhon с пользовательским интерфейсом на основе тулкита GTK+, на основе которого также была построена ведущая на тот момент оконная система для Linux.
Таким образом, библиотека matplotlib изначально разрабатывалась как инструмент для визуализации данных EEG/ECoG для этого приложения на основе GTK+, а условия ее использования были продиктованы оригинальной архитектурой. Изначально библиотека matplotlib была спроектирована также с другой целью: выступить заменой инструмента для интерактивной генерации графиков на основе команд, что системе MATLAB удавалось очень хорошо. Архитектура системы MATLAB позволяла выполнять простую задачу загрузки данных из файла и построения на основе этих данных графика достаточно прозрачно, при этом использование полностью объектно-ориентированного API в данном случае привело бы к значительному усложнению синтаксиса. Поэтому библиотека matplotlib также предоставляет не зависящий от состояния интерфейс сценариев для быстрой и простой генерации графиков, аналогично тому, как это реализуется в системе MATLAB. Так как matplotlib является библиотекой, пользователи имеют доступ ко всему множеству встроенных структур данных языка Python, таких, как списки, словари, множества и другим.
Рисунок 11.1: Оригинальное использующее matplotlib приложение: инструмент для визуализации данных ECoG
Далее: Обзор архитектуры библиотеки matplotlib