Создание диаграммы на основе переданых данныхРассмотрим пример скрипта с описанием,который позволяет динамически создавать диаграмму на основе переданых данных имеющую вид: Такой скрипт,например будет очень удобен при создании статистики у вас на сайте (хотя его приаменения могут быть более разнообразными). Вы должны передать в этот скрипт 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)); //Выводим в процентах ImageString($im,3,$x-25,$y-2,intval(round(($value/$total)*100))."%",$yellow); $px = $x + ( intval(round(($value/$total)*100)) * $unit); 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); ?> |
<img src="graph.php?title=foo&width=500&data=a^15^^b^20^^">
Удачи в ваших программыных изысканиях!
Автор статьи: Тарасенко Сергей
Информационный клуб Webмастеров "Kwazar"ї
wc@newmail.ru