JPGraph — создание графиков
объектно-ориентированная библиотека для работы с изображениями
JPGraph — это объектно-ориентированная библиотека для создания графики, написанная на PHP и готовая к использованию в любых PHP-скриптах. Для работы с JPGraph вам понадобится PHP версии 4.3.1 и выше.
Посредством данной библиотеки могут создаваться как изображения для просмотра онлайн, так и для сохранения в файл, как легкие с точки зрения кода, как бы созданные на скорую руку графы, так и сложные диаграммы, отвечающие высоким требованиям к разрешению и точности изображения.
Используя JPGraph, вы сможете создавать графики, диаграммы различных типов как 2D-, так и 3D-проекции, защитные антиспамовые изображения и даже географические карты. В бесплатной версии библиотеки доступно большинство возможностей, но имеется также и профессиональная версия, позволяющая разработчику получить доступ к дополнительным функциям JPGraph.
Основные отличительные особенности библиотеки
- Ориентация на нужды пользователя Интернета: графика оптимизирована, обычно изображение размером 300 на 200 пикселов весит всего лишь 5-7 килобайт.
- Поддерживается кеширование созданных изображений с целью снижения нагрузки на HTTP-сервер.
- Поддерживается версии библиотеки GD-library 1 и 2, установленная версия определяется автоматически, таким образом, разработчик не испытывает необходимости изменять код в зависимости от версии GD-library.
- Интерполяция графиков происходит таким образом, чтобы получить плавные кривые даже всего лишь по небольшому количеству известных точек.
- Поддерживается создание диаграмм Гантта для разработки временных графиков при планировании проектов.
- Предоставляется возможность менять масштаб, направленность, количество осей, менять их тип (текстовые, числовые, логарифмические) и комбинировать различные типы осей абсцисс и ординат.
- Возможно использовать разнообразные фоновые изображения и маркеры при создании графиков и диаграмм, в том числе имеются и встроенные фоновые изображения.
- Поддерживается большое количество цветов при создании графики и TTF-шрифтов для вывода текста.
- Имеется возможность наложения различных эффектов на готовые изображения, таких как "фаски", горизонтальные и вертикальные градиентные заливки, координатные сетки и прочее.
- предоставляется улучшенная система управления ошибками.
Пример создания нескольких круговых диаграмм для презентации |
Некоторые типы графиков и диаграмм, создаваемых посредством JPGraph:
- Линейные графики. Могут быть приспособлены для представления практически любой иноформации, на них доступно инвертирование осей, использование дублирующихся осей, заливок цветом и градиентом, разнообразных маркеров (как стандартных для данной библиотеки, так и собственных маркеров пользователя, которые возможно масштабировать и кешировать); специальные функции сглаживания позволяют линейную диаграмму превратить в плавную кривую, соединяющую любое количество контрольных точек.
- Столбчатые диаграммы. Также пользуются большой популярностью; при помощи JPGraph возможно создать как горизонтальную, так и вертикальную столбчатую диаграмму, для наглядности также могут быть использованы различные цветовые отображения, градиенты, заливки, нанесение дополнительных данных как непосредственно на гистограмму, так и в область комментариев, использование фоновых изображений, которые масштабируются и кешируются без привлечения сторонних программ и редакторов обработки графики.
- В случае необходимости имеется возможность использовать на одном графе одновременно столбчатое и линейное представление данных.
- Круговые и кольцевые диаграммы. Очень красочны и наглядны, особенно в трехмерном исполнении, пользуются большим спросом при подготовке презентаций, так как есть возможность расчленить диаграмму, акцентировав внимание на любой из ее частей, вывести процентное соотношение частей, прочую полезную информацию прямо на граф.
- Точечные диаграммы и их разновидность, так называемая пузырьковая диаграмма (balloоn plot), позволяющая в качесте дополнительного параметра, характеризующего точку, помимо координат использовать цвет и размер изображающего ее маркера.
Переход на профессиональную версию продукта
Некоторые виды диаграмм доступны только в профессиональной версии продукта |
Профессиональная версия библиотеки
В случае если JPGraph будет использован в коммерческих проектах (то есть в ситуации, когда использование библиотеки связано с получением прибыли или усовершенствованием бизнесс-процессов, ориентированных на получение прибыли), разработчики предлагают преобрести профессиональную лицензию. В качестве дополнительных услуг для платных пользователей предоставляются техническая поддержка продукта на протяжении шести месяцев после приобретения, автоматические уведомления об обновлениях, дополнительные возможности библиотеки, недоступные в бесплатной редакции. Среди исключительно платных дополнений:
- модули для создания штрихкодов;
- модули для создания графов в виде одометров и тахометров;
- модули для создания диаграмм розы ветров;
- возможность создания Еxcel-подобных таблиц, которые могут добавляться на графы в качестве объектов.
Инсталляция библиотеки
Установить JPGraph очень просто: достаточно всего лишь использовать include "путь к файлам библиотеки". Библиотека может использоваться как на Unix-, так и на Windows-серверах.
Для наглядной демонстрации возможностей библиотеки создадим простейший линейный график.
Подключаем JPGraph:
include "jpgraph.php";
Подключаем расширение, ответственное за создание линейных графиков:
include "jpgraph_line.php";
Задаем некоторые массивы значений, которые необходимо будет вывести на граф (массив значений абсцисс опционален, его можно не задавать):
$ydata = array(1, 7, 3, 5, 11, 10, 7);
$xdata = array(0, 1, 2, 3, 4, 5, 6);
Создаем экземпляр класса графика, задаем параметры изображения: ширина, высота, название файла в кеше, время хранения изображения в кеше, указываем, выводить ли изображение при вызове функции Stroke (true) или только создать и хранить в кеше (false):
$graph = new Graph(300, 200, «auto», 10, true);
Указываем, какие оси использовать:
$graph->SetScale("textlin");
Создаем экземпляр класса линейного графика, передадим ему нужные значения:
$lineplot = new LinePlot($ydata, $xdata);
$lineplot->SetColor("forestgreen");
Выводим кривую на график:
$graph->Add($lineplot);
Даем графику имя:
$graph->title->Set("My Example");
Если есть необходимость давать название на русском языке, то необходимо использовать TTF-шрифты с поддержкой русского языка, например arial. Укажем, какой шрифт и какое оформление (обычное FS_NORMAL, жирный шрифт FS_BOLD и так далее) использовать:
$graph->title->SetFont(FF_ARIAL, FS_NORMAL);
$graph->xaxis->title->SetFont(FF_VERDANA, FS_BOLD);
$graph->yaxis->title->SetFont(FF_TIMES, FS_ITALIC);
Назовем оси:
$graph->xaxis->title->Set("Ось X");
$graph->yaxis->title->Set("Ось Y");
Для наглядности выделим их цветом:
$graph->xaxis->SetColor("#BB0000");
$graph->yaxis->SetColor("#BB0000");
Сделаем кривую на графике толщиной в три пиксела:
$lineplot->SetWeight(3);
Обозначим точки звездочками, задав тип маркера:
$lineplot->mark->SetType(MARK_STAR);
Выведем значения над каждой из точек:
$lineplot->value->Show();
Фон графика зальем градиентом:
$graph->SetBackgroundGradient("ivory", «yellow»);
И в качестве финального штриха добавим эффект тени от всего изображения:
$graph->SetShadow();
Выдаем получившееся изображение в браузер (в случае если при создании объекта graph последний параметр был false, изображение будет сохранено в кеше, но не выдано в браузер):
$graph->Stroke();
Пример создания линейной диаграммы |
Приведенный пример показывает создание простейшего графика, но не менее легко и интуитивно могут быть созданы и более сложные графики и диаграммы.
Значения для вывода не обязательно знать заранее и вводить вручную, как было показано в примере. Данные могут быть получены как базы данных, например MySQL, так и из таблиц Excel, прочитаны из файла, получены из сессии как результаты работы других скриптов. В случае если для создания изображения нужно небольшое количество внешних данных, они могут быть переданы через глобальный массив _GET через адресную строку при вызове файла графика: graph.php?a=1&b=2.
Данные из базы данных могут быть получены путем обработки результатов, возвращаемых обычным SELECT-запросом. Необходимо уделить внимание тому, чтобы все значения, передаваемые для создания изображения, были числовыми.
Для использования данных, хранящихся в таблицах Excel, необходимо экспортировать данные из таблицы в файл CSV (comma separated values), а затем либо использовать собственную процедуру чтения и разбора данных из файла, либо использовать утилиту ReadCSV из jpgraph_utils.php. Для этого необходимо выполнить следующие действия.
Подключить файл с утилитами:
include "jpgraph_utils.php";
Считать данные из файла:
$n = ReadFileData::FromCSV('data.csv', $datay);
В данной статье были рассмотрены только основы использования библиотеки JPGraph. Намного более полную информацию, советы, ответы на вопросы можно получить на официальном сайте.