Графики и диаграммы средствами PHP+GD
Часто перед web-разработчиком стоит задача генерирования графиков и диаграмм на основе некоторых данных. Если диаграммы еще можно построить средствами HTML + CSS, то графики так вывести уже не удастся. Более предпочтительный вариант – генерирование рисунков с помощью PHP + GD. Но и этот вариант достаточно трудоемок.
Поэтому я уже давно искал сторонний продукт, который переложил бы на себя всю рутину работы с GD, а разработчику дал лишь удобный интерфейс для манипулирования видом получаемых диаграмм/графиков.
Моим требований полностью соответствовал лишь ASE ChartDirector, но, к сожалению, этот продукт распространяется на платных условиях, поэтому сферы его применения весьма ограничены ;)
Но буквально пару дней назад я нашел достойную бесплатную альтернативу продукту от компании ASE. Имя ей – JpGraph. Библиотека полностью объектно-ориентированная, содержит в себе 101 класс и 948 методов, которые позволяют создавать практически любые диаграммы и графики. Вместе с библиотекой поставляется подробнейший мануал, описание всех классов и методов, а также пара сотен примеров.
Для примера я попытался создать простую диаграмму и по возможности придать ей как можно более приятный глазу вид.
Ниже преведен код, который генерирует эту прелесть :]
<?php
// подключим библиотеки
include ("../jpgraph.php");
include ("../jpgraph_bar.php");
// определим массив данных
$datay=array(13,8,16,3,1,5,8,6,15,8,9,12);
// создадим область для вывода диаграммы
$graph = new Graph(400,300,"auto");
// определим масштабирование по осям
$graph->SetScale("textlin");
// добавим тень
$graph->SetShadow(true, 3, array(222,222,222));
// определим отступ для области вывода
$graph->img->SetMargin(40,30,20,40);
// определим цвет отступа
$graph->SetMarginColor('white');
// создадим рамку
$graph->SetFrame(true,'gray',1);
// создадим диаграмму
$bplot = new BarPlot($datay);
// определим цвет заполнения столбцов
$bplot->SetFillColor('#ff9900');
// покажем значения над каждым столбцом
$bplot->value->Show();
// установим формат вывода значений
$bplot->value->SetFormat('%d');
// установим цвет для значений
$bplot->value->SetColor('#0066ff');
// установим ширину столбцов
$bplot->SetWidth(0.6);
// добавим диаграмму в область вывода
$graph->Add($bplot);
// граница вокруг диаграммы
$graph->SetBox(true, 'gray');
// покажем и определим сетки значений
$graph->xgrid->Show();
$graph->xgrid->SetLineStyle('dashed');
$graph->xgrid->SetColor('gray');
$graph->ygrid->SetLineStyle('dashed');
$graph->ygrid->SetColor('gray');
$graph->ygrid->SetFill(true,'#EFEFEF@0.5','#CCCCCC@0.5');
// спрячем метки на осях
$graph->xaxis->HideTicks();
$graph->yaxis->HideTicks();
// установим цвет осей и подписей
$graph->xaxis->SetColor('darkgray', 'darkgray');
$graph->yaxis->SetColor('darkgray', 'darkgray');
// определим шрифт для вывода подписей на осях
$graph->xaxis->title->SetFont(FF_VERDANA,FS_NORMAL);
$graph->yaxis->title->SetFont(FF_VERDANA,FS_NORMAL);
// определим отступ сверху
$graph->yaxis->scale->SetGrace(10);
// отобразим результат
$graph->Stroke();
?>
Рекомендуем почитать