pChart – рисуем графики в PHP

Рисование графиков и гистограмм – не самая частая задача, с которой может столкнуться программист на PHP, но порой такое происходит. Существует несколько php-библиотек, предназначенных для рисования графиков, но наиболее популярной из них является pChart. С ее помощью вы без труда сможете нарисуете графики, гистограммы, «пироги» и тп.


pChart – рисуем графики в PHPpChart – рисуем графики в PHP


Скачав и распаковав rar-архив с последней версией pChart с официального сайта проекта (на момент написания статьи последняя версия имела номер 1.27d), вы увидите различные каталоги и файлы с именами Example(номер).php. Так вот, 90% этого добра нам не нужно. Ну разве что имеет смысл изучить примеры. Реальную ценность представляют только два файла – pChart/pData.class и pChart/pChart.class.

В первом содержится описание класса pData. Он предназначен для хранения данных, которые в дальнейшем будут выведены на график/гистограмму – подписи по осям, непосредственно выводимые значения и тд. В файле pChart.class содержится описание класса pChart, отвечающего за само рисование графиков. Данные для графиков он получает от класса pData.

Описание атрибутов и методов классов pChart и pData можно найти в самих *.class файлах, или посмотреть, как эти классы используются в примерах. В этой статье мы рассмотрим простенький скрипт, рисующий гистограмму.
<?php

// подключаем pChart
include "./pChart/pChart.class";
include "./pChart/pData.class";

// генерируем случайные данные для вывода на гистограмму
$series = array();
mt_srand(time());
for($i = 0; $i < 18; $i++) {
  $series[0][] = "$i.12";
  $series[1][] = 5000 + mt_rand(-500, +500);
  $series[2][] = $series[1][$i] - mt_rand(100, 200);
}

// теперь помещаем данные в специальный класс - pData
$data = new pData;
$n = 0;

foreach($series as $k = $v) {
  if(++$n == 1) {
    $keySerie = "$k"; // $series[0] - это подписи по оси абсцисс
    $ksSize = count($v);
  }
  $data-AddPoint($v, "$k");
}

$data-AddAllSeries();
$data-RemoveSerie($keySerie);
$data-SetAbsciseLabelSerie($keySerie);

// теперь готовим гистограмму
$chart = new pChart(512,192);

// задаем шрифт
$chart-setFontProperties("tahoma.ttf", 8);
// какую часть изображения выделить под гистограмму?
$chart-setGraphArea(50, 10, 512, 150);

// рисуем шкалу; описание аргументов метода - в файле pChart.class
$chart-drawScale($data-GetData(),$data-GetDataDescription(),
  SCALE_NORMAL | SCALE_START0 /*mode*/,/* rgb */0,0,0,TRUE,90,2,TRUE);

// рисуем сами "столбики"
$chart-drawBarGraph($data-GetData(),$data-GetDataDescription(),
  FALSE /* shadow */, 100 /* alpha */, FALSE /* black border */);

// выводим результат
$chart-Stroke();

?>


Полный исходный код примера можно скачать здесь смотреть фильмы онлайн бесплатно03-pchart-test.zip [230,88 Kb] (cкачиваний: 68).

Вот так будет выглядеть результат работы скрипта:

pChart – рисуем графики в PHP


Цвета столбцов и угол наклона подписей по оси абсцисс при желании можно поменять. Также без особого труда можно добавить название графика и легенду.

Как видите, pChart – мощная и достаточно простая в использовании библиотека, распространяемая при этом абсолютно бесплатно. К недостаткам pChart можно отнести относительно невысокую скорость работы. Например, модуль GD::Graph, активно используемый программистами на Perl, работает ощутимо быстрее.