Библиотека сайта rus-linux.net
Библиотека matplotlib
Глава 11 из книги "Архитектура приложений с открытым исходным кодом", том 2.Оригинал: matplotlib
Автор: John Hunter, Michael Droettboom, перевод: А.Панин
11.3. Рефакторинг системы вывода данных
draw_arc, draw_image, draw_line_collection, draw_line, draw_lines, draw_point, draw_quad_mesh, draw_polygon_collection, draw_polygon, draw_rectangle, draw_regpoly_collection
К сожалению, использование большого количества методов системы вывода данных усложняло разработку новых систем вывода, а так как новые функции добавлялись в основной код, обновление существующих систем вывода данных также стало достаточно сложной задачей. Так как каждая из систем вывода данных была реализована силами одного разработчика, который являлся экспертом в области определенного формата файлов, иногда требовалось большое количество времени для реализации новой возможности в каждой из систем вывода данных, что еще больше затрудняло понимание пользователем того, какие функции доступны в той или иной системе.
draw_path
: Рисует сложные полигоны с помощью линии и сегментов Безье. Этот интерфейс заменяет множество устаревших методов:draw_arc
,draw_line
,draw_lines
иdraw_rectangle
.draw_image
: Выводит растровые изображения.draw_text
: Выводит текст с заданными параметрами шрифта.get_text_width_height_descent
: При передаче строки текста возвращает ее метрики.
Возможно реализовать все необходимые функции рисования в рамках новой системы вывода данных, используя только перечисленные методы. (Мы можем пойти еще дальше и выводить текст с помощью метода draw_path
, исключив тем самым необходимость в реализации метода draw_text
, но мы не захотели реализовывать данное упрощение. Конечно же, в рамках системы вывода данных возможна реализация специфического метода draw_text
для вывода "реального" текста.) Эти изменения упростили процесс создания и разработки новой системы вывода. Однако, в некоторых случаях системе вывода данных может потребоваться изменить принцип работы основного кода библиотеки для увеличения производительности операции вывода. Например, при рисовании маркеров (небольших символов, используемых для указания на вершины графика) для большей экономии места удобно однократно записывать изображение маркера в файл, после чего использовать его в необходимых местах, копируя методом "штампа". В этом случае система вывода данных может реализовать метод draw_markers
. Если этот метод реализован, система вывода данных будет однократно записывать изображение маркера, после чего будет отправлять гораздо более короткую команду для повторного использования этого изображения во множестве точек. Если же этот метод не реализован, основной код библиотеки просто будет многократно выводить изображение маркера с помощью метода draw_path
.
draw_markers
: Изображает набор маркеров.draw_paths_collection
: Изображает набор контуров.draw_quad_mesh
: Изображает четырехугольную сетку.
Далее: Преобразования