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

09.03.2010 | Рубрика: Разработка

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

Скачав и распаковав 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();

?>

Полный исходный код примера можно скачать здесь. Вот так будет выглядеть результат работы скрипта:

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

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

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

Кстати, «пирог» в статье Обзор каталога форумов ForumCatalog.ru также нарисован с помощью pChart.

Постовые:

  • Ищите работу? Срочно требуется персонал? Сайт работа в Одессе – это самые свежие вакансии и резюме.
  • Не понимаешь анекдоты про котэ и шредер? Читай реальные приколы про сисадминов на PROAdminov.Ru. Здесь приколы действительно смешные, а не как на баше :)
  • Если Вы планируете создать свой сайт, приглядитесь повнимательнее к системе управления контентом (CMS) Joomla. Плагины и шаблоны Joomla позволяют обеспечить необходимый функционал и придать индивидуальность Вашему сайту. Это действительно отличный движок.
Метки: , ,

Похожие материалы:

  1. Пример использования Ajax
  2. Обзор сайтов для веб-разработчика
  3. Когда стоит использовать Ajax
  4. Введение в Ajax
  5. JavaScript-библиотеки с поддержкой XHR
RSS
Следите за обновлениями сайта по RSS, или в .
Есть вопросы? Задайте их на нашем форуме, без регистрации.
Оставить комментарий
28 Комментариев
  • Ответить

    Интересная библиотека.
    Спасибо. Я недавно долго мучался с добавлением правильного watermark.
    Даже в своем блоге опубликовал наработку. Хорошо будет собрать блоги именно разработчиков, или скриптов на php.

  • Анатолий Пискунов, рад, что статья Вам понравилась. А что вы имели ввиду, говоря «собрать блоги»?

  • Ответить

    Большое спасибо! Это именно то что я искал :)

  • Ответить

    Пока не сталкивался с подобными задачами, но сразу понравилась простота кода. Я думаю с помощью этой библиотеки достаточно просто прикручивать диаграммы куда заблагорассудится :)

  • Ответить

    Великолепная статья, правда.
    Это то,что мне сейчас действительно нужно, т.к. сейчас делаю «сайт» – онлайн программу по учету анализов вирусологической лаборатории, так вот там, для наглядности придется придется строить различных графиков.
    Например отношение анализов по гос.заказу (свиной грипп) к коммерческим заказам (анонимный тест на сифон :) и т.п.)

    Добавил закладку в избранное.
    ps
    А я для реализации своей задачи планировал генерировать файл экселя и отображать его в браузере..

  • Белоногов Илья, а современные браузеры уже умеют просматривать Excel или есть какие-то библиотеки для этого?

  • Абалденные графики! Обязательно использую разработку в своих проектах! Спасибо!!

  • Успешный разработчик, а что за проекты Вы готовите, если не секрет? :)

  • Ответить

    хм… сейчас попробуем нарисовать простенький график, хотя и не силен в пхп, но попытка не пытка… тем более все расписано =)

  • Ответить

    Класс. У меня программист искал. Сегодня ткну его в пост))

  • Если у кого-нибудь есть пожелания, о чем написать следующую статью по программированию, пишите, не стесняйтесь.

  • Ответить

    Даже не знал о такой библиотеке, строи на ява графики.

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

  • Zircool, скрыть рефера – это в контексте комментирования блогов с целью продвижения сайта или? :)

  • Ответить

    Отличная статья. Все подробно и понятно написано. Надо будет взять эту библиотеку на заметку.

  • Belinskiy, рад, что Вам понравилась. Нет ли пожеланий, чему посветить следующую «программерскую» статью?

  • Ответить

    Прикольные графики, у себя на блоге обязательно сделаю!

  • Вадим, а зачем Вам в блоге графики, если не секрет? :)

  • Ответить

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

  • Ответить

    Супер!
    А скажите, как сделать, чтоб числа $i.12 отображадись горизонтально?

  • Ответить

    Петр, я уже точно не помню, но посмотрите аргументы $chart->drawScale. Тот, который в примере равен 90, по-моему, нужно заменить на 0.

Оставить комментарий

Вы можете войти, зарегистрироваться или оставить анонимный комментарий:

* Имя
* E-mail
Блог (если есть)
* Антиспам: 8 + 10 = ?
* - обязательные поля, e-mail не публикуется.