pChart — строим графики и диаграммы на PHP. Практика
Всем привет!
По наводке из статьи «pChart — строим графики и диаграммы на PHP» реализовал у себя построение графиков. Вот так выглядит:
Примеры это, конечно, хорошо, но практическая реализация может помочь в понимании. Моё применение под катом.
Фреймвоков для построения графиков много. Есть платные хорошие, есть бесплатные неплохие. Мне pChart показался достаточно удобным и функциональным. Итак к реализации.
pChart работает следующим образом. Заносит данные в свой массив, рисует картинку с графиком, сохраняет её на диск. Затем надо эту картинку отобразить в документе.
addPoints($sum,"Total"); $myData->addPoints($dt,"Labels"); >; $unique = date("Y.m.d_H.i"); $gsFilename_Traffic = "traffic_".$unique.".png"; $myData->setSerieDescription("Labels","Days"); $myData->setAbscissa("Labels"); $myData->setAxisUnit(0," KB"); $serieSettings = array("R"=>229,"G"=>11,"B"=>11,"Alpha"=>100); $myData->setPalette("Total",$serieSettings); $myPicture = new pImage(1250,400,$myData); // setFontProperties(array("FontName"=>"fonts/tahoma.ttf","FontSize"=>8)); $myPicture->setGraphArea(50,20,1230,380); // drawScale(); $myPicture->drawBestFit(array("Alpha"=>40)); // drawLineChart(); $myPicture->drawPlotChart(array("DisplayValues"=>FALSE,"PlotBorder"=>TRUE,"BorderSize"=>0,"Surrounding"=>-60,"BorderAlpha"=>50)); // drawLegend(700,10,array("Style"=>LEGEND_NOBORDER,"Mode"=>LEGEND_HORIZONTAL));// Render("pChartPic\\".$gsFilename_Traffic); ?>
Надеюсь, мой пример поможет новичкам (а, может, и не только). Пример простенький, ничего лишнего. Часто большего и не нужно. Дальше, при желании, можно наворачивать красивости.
Рисование диаграммы в php
Частенько нужно построить диаграмму для оценки тех или иных количественных параметров. В этом нам поможет библиотека GD и ее PHP API. Нижеследующий класс строит простенькую круговую диаграмму.
120, 'f10d0d'=>20, '280df1'=>70, 'dd0ee5'=>45, '000000'=>10); $instance->generate($data);
Как видно из примера, передаем методу generate ассоциативный массив, где ключ — цвет. Минимальный угол — 1 градус, так что если какое-то значение, переведенное в градусы, меньше 1, оно игнорируется. Можно передавать как в процентах, так и в произвольных единицах. Построение происходит с применением пропорций, где сумма всех элементов = 360 градусов.
Из примера получается круговая диаграмма:
По клику видим оригинальное изображение 500х500px. Обращаем внимание, что оно угловатое. Поэтому, либо уменьшаем его непосредственно в браузере (параметрами width и height тэга img), либо ресайзим, например, как описано в этой статье с применением метода resample. Целесообразнее воспользоваться первым вариантом, дабы сэкономить ресурсы сервера.
SomeNumber * @return picture */ public function generate($result = array('808080'=>33, '800080'=>33, '000000'=>33)) < $sum=0; /*Calculate sum of all elements*/ foreach($result AS $row) < $sum += $row; >$image = imagecreatetruecolor(500, 500); imagefilledrectangle($image, 0, 0, 500, 500, imagecolorallocate($image, 255, 255, 255)); $old_grad=0; foreach($result AS $key => $row) < /*split array*/ list($r, $g, $b) = $this->_html2rgb($key); /*Calculate sectors in degrees*/ $grad = $old_grad + round(($row*360)/$sum); /*LibGD rounds degrees.*/ if(round($old_grad) == round($grad)) continue; $color = imagecolorallocate($image, $r, $g, $b); imagefilledarc($image, 250, 250, 500, 500, $old_grad, $grad, $color, IMG_ARC_PIE); $old_grad = $grad; > header('Content-type: image/gif'); imagegif($image); imagedestroy($image); > /* * @param $color * WebColor * * @return array * Color in RGB notation */ private function _html2rgb($color) < if ($color[0] == '#') $color = substr($color, 1); if (strlen($color) == 6) list($r, $g, $b) = str_split($color, 2); else return false; $r = hexdec($r); $g = hexdec($g); $b = hexdec($b); return array($r, $g, $b); >>
Источник
Рисуем графики на PHP
Графики на страницах с помощью PHP необходимы во многих случаях — для создания опросов и голосований, статистики. Иногда можно использовать Google Api для создания графиков, иногда PHP. Исходя из этого, мы рассмотрим сегодня примеры различных графиков на PHP и Javascript.
В статье я буду использовать классы, изъятые из разных платных приложений, в некоторых случаях их использование разрешается, например, если вы их используете на бесплатном, некоммерческом сайте, более подробное описание лицензии можно найти на сайте http://www.pchart.net/license.
Возможности классов pChart
- множество геометрических фигур (круги, многоугольники, линии);
- поддержка теней для фигур;
- возможность использовать собственные ttf шрифты
- возможность лёгкой установки и настройки;
- рисование кривых;
- создание полупрозрачного эффекта для фигур и линий;
Скачать архив классов php для работы с рисованием графиков.
Пример простого графика нарисованного в php:
Для правильной работы класса создающиего риснуки графиков необходима следубщая структура директорий (скачать её можно в конце статьи):
./ index.php chart/ class/ data/ fonts/ palettes/ tmp/
- index.php — текший страница;
- class — директория с классами для рисования гарфиков;
- fonts — шрифты, которые вы можете использовать в графиках;
- цветовая схема графика;
- директория в которую помещаяется кэш файл и изображение;
Мы использовали функцию get_poll_pie_chart для того чтобы нарисовать круговую диаграмму. Вместо этой функции можно использовать следующие функции:
- get_timeline_chart — линейный график с равномерным отображением линии;
- get_poll_bar_chart — линейный график с динамическим отображением линии на графике;
Пример графика, созданного функцией get_poll_bar_chart :
Пример графика, созданного функцией get_timeline_chart :
Некоторые графики на php вполне возможно объединить с графиками из Google Charts. Например, круговой график в Google Charts полностью соответствует круговой диаграмме отображённой ранее на странице:
Пример использования графиков Google Charts
Один из возможных вариантов использования графиков Google Charts создание индикатора загрузки файла:
Для создания индикатора можно использовать следующий код:
gChart
Если Вам не хватило инструментов для работы с графиками и диаграммами то можете использовать класс php «gChart» от Google. Все нижеуказанные диаграммы и графики созданы с использованием «gChart».