Добро пожаловать!
Здесь вы можете найти ответ на интересующий вас вопрос в отрасли сайтостроения, познакомится ближе с web технологиями и web стандартами.

Статьи

Графики и диаграммы средствами PHP + GD

http://www.barushev.net/

Часто перед web-разработчиком стоит задача генерирования графиков и диаграмм на основе некоторых данных. Если диаграммы еще можно построить средствами HTML + CSS, то графики так вывести уже не удастся. Более предпочтительный вариант – генерирование рисунков с помощью PHP + GD. Но и этот вариант достаточно трудоемок.

Поэтому я уже давно искал сторонний продукт, который переложил бы на себя всю рутину работы с GD, а разработчику дал лишь удобный интерфейс для манипулирования видом получаемых диаграмм/графиков.

Моим требований полностью соответствовал лишь ASE ChartDirector, но, к сожалению, этот продукт распространяется на платных условиях, поэтому сферы его применения весьма ограничены ;)

Но буквально пару дней назад я нашел достойную бесплатную альтернативу продукту от компании ASE. Имя ей – JpGraph. Библиотека полностью объектно-ориентированная, содержит в себе 101 класс и 948 методов, которые позволяют создавать практически любые диаграммы и графики. Вместе с библиотекой поставляется подробнейший мануал, описание всех классов и методов, а также пара сотен примеров.

Для примера я попытался создать простую диаграмму и по возможности придать ей как можно более приятный глазу вид.

Диаграмма, построенная с помощью JpGraph

Ниже преведен код, который генерирует эту прелесть:

<?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(true3, 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();
?>