WebClub - Всероссийский Клуб Веб-разработчиков
WebClub.RU » Советы » Создание диаграммы на основе переданых данных

Создание диаграммы на основе переданых данных


Дата публикации: 18-01-2011

 

Тарасенко Сергей

 

WebScript.Ru

 

 

Рассмотрим пример скрипта с описанием,который позволяет динамически создавать диаграмму на основе переданых данных имеющую вид:

 

Такой скрипт,например будет очень удобен при создании статистики у вас на сайте (хотя его приаменения могут быть более разнообразными). Вы должны передать в этот скрипт 3 параметра : title,width и data.

  • title - название диаграммы (в примере "foo")
  • width - длина картинки в пикселях.
  • data - переменные и значения по которым строится диаграмма

Удобство скрипта в том,что количество передаваемых переменных не ограничено

Внимание! GD должна быть включена

<?
//Название
$title = urldecode($title);
//Данные
$data = urldecode($data);
//Начальная точка построения диаграммы
$x = 40;
$y = 30;
$right_margin= 20;
$bar_width = 10;
$total = 0;
$max = 0;
$unit = (($width-$x)-$right_margin) / 100;
$items= explode("^^",$data);
//Сумма
while (list($key,$item) = each($items))
{
if ($item)
{
$pos = strpos($item,"^");
$value = substr($item,$pos+1,strlen($item));
$total = $total + $value;
}
}
reset($items);
//Подсчет высоты диаграммы
$height = sizeof($items) * ($bar_width + 20);
Header("Content-type:  image/gif");
$im = imagecreate($width,$height);
// Задание цвета
$white=ImageColorAllocate($im,255,255,255);
$yellow=ImageColorAllocate($im,240,240,70);
$blue=ImageColorAllocate($im,0,64,128);
$bar=ImageColorAllocate($im,64,100,168);
//Задание фона
ImageFilledRectangle($im,0,0,$width,$height,$blue);
//Рисуем заголовок
$title_x = (imagesx($im)-7.5*strlen($title))/2;
ImageString($im,3,$title_x,4,$title,$white);
//Рисуем дату
ImageString($im,1,$width-150,17,date("D M jS Y h:i:s A"),$white);
//Линия
Imageline($im,$x,$y-5,$x,$height-15,$bar);
//Прорисовываем данные
while (list($key,$item) = each($items))
{
if ($item)
{
$pos = strpos($item,"^");
$item_title = substr($item,0,$pos);
$value = substr($item,$pos+1,strlen($item));
ImageFilledRectangle($im,$x,$y-2,$px,$y+$bar_width,$bar);
ImageString($im,2,$x+5,$y+9,$item_title,$white);
ImageRectangle($im,$px+1,$y-2,($x+(100*$unit)),$y+$bar_width,$bar);
//Выводим отношения
ImageString($im,1,($x+(100*$unit))-40,$y+12,$value."/".$total,$white);
}
$y=$y+($bar_width+20);
}
// Показываем созданую диаграму
ImageGif($im);
// Очищаем память:
ImageDestroy($im);
?>

Вы также можете вызавать картинки в самом html документе,при помощи:

<img src="graph.php?title=foo&width=500&data=a^15^^b^20^^">     

Ну вот и все.

Удачи в ваших программыных изысканиях!

Автор статьи: Тарасенко Сергей

Популярное

Не так давно в сети появился новый сервис, под названием Dead Man Zero. Этот сервис сделал...
Рынок социальных площадок уже давно стал стабильным. Несмотря на то, что время от времени...
Artisteer 4 – единственный в своем роде продукт, позволяющий автоматизировать работу над созданием...
Март 2017 (1)
Февраль 2017 (3)
Январь 2017 (1)
Август 2016 (1)
Май 2016 (2)
Ноябрь 2015 (1)

Карта сайта: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41

Друзья сайта

Хотите продать свой сайт?
- Мы быстро и удобно для Вас сможем его купить:
  • Заявка на продажу сайта
  • Раcсматриваем цены на каждый сайт в индивидуальном порядке.

    Случайная цитата

    Неизвестный автор:

    "Мала ссылка, да в действии пылка."

    Опрос

    Какими социальными сетями Вы пользуетесь?

    Vkontakte.ru
    Одноклассники
    Мой Мир - mail.ru
    Google Plus
    Facebook
    ЖЖ
    Другие
    Не пользуюсь