WebScript.Ru
C:\   главная  ::   о сайте  ::  каталог скриптов  ::  гнездо  ::  форум  ::   авторам  :: Новостройки ::   ХОСТИНГ  ::

|| разделы::
|| поиск по сайту::

|| реклама::
|| новости почтой::
Рассылки Subscribe.Ru ::



Новости сайта WebScript.Ru
Популярные статьи

Hot 5 Stories

|| рекомендуем::




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


Прислал: Тарасенко Сергей [ 14.05.2001 @ 05:55 ]
Раздел:: [ Статьи по PHP ]


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

Такой скрипт,например будет очень удобен при создании статистики у вас на сайте (хотя его приаменения могут быть более разнообразными). Вы должны передать в этот скрипт 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);
?>

Вы также можете вызавать картинки в самом html документе,при помощи:
<img src="graph.php?title=foo&width=500&data=a^15^^b^20^^">     

Ну вот и все.

Удачи в ваших программыных изысканиях!
Автор статьи: Тарасенко Сергей
Информационный клуб Webмастеров "Kwazar"
wc@newmail.ru


 :::::  Master Vip пишет 14.05.2001 @ 08:39 
Что такое GD?
 :::::  NAS пишет 14.05.2001 @ 15:04 
GD - графическая библиотека.
http://stein.cshl.org/WWW/software/GD/GD.html

 :::::  BuG пишет 17.05.2001 @ 04:05 
А для какой версии GD это дело работает? Насколько я понял, бегло пробежавшись по коду, используется Гиф. А в новых версиях он не поддерживается, так что нужно качать 1.19-ю версию???
 :::::  BuG пишет 19.05.2001 @ 04:25 
И вообще, как устанавливать этот ваш ГД??? Ответьте, будьте добры, ато скачать то я его скачал, но мне кажется его еще и прописать куда-то надо...
 :::::  Scriptik.ru пишет 19.05.2001 @ 08:30 
to BuG: библиотека GD - это dll файл в папке extensions в PHP. Для её включения надо отредактировать php.ini - у меня например это 252 строка - там надо разкомментить строчку, где написано extension=php_gd.dll (вобщем это раздел Dynamic Extensions и там чуть ниже есть список, где и есть эта строка с gd). А по поводу версии - какая разница, gif или png ? Для пользователей сайта www.scriptik.ru доступен счетчик, так он работает отлично, используя png.

 :::::  Slach пишет 20.05.2001 @ 12:10 
Хых...
PHPlot поможет больному

http://www.phplot.com/
 :::::  Eraser пишет 04.07.2001 @ 06:47 
Интересен такой момент: как добавить в GD поддержку русских фонтов. Может кто знает. Подскажите.
 :::::  d1gg3r пишет 12.09.2001 @ 12:43 
как сделать форму запроса для этого скрипта?
если не в лом пошлите мне =)), на d1gg3r@mail.ru
заранее спасибо...
 :::::  Misha пишет 15.09.2001 @ 11:42 
Как писать по русски при в диаграмме?
 :::::  d1gg3r пишет 16.09.2001 @ 03:22 
to Misha: да вроде никак, GD кирилицу не поддерживает, =((,
 :::::  Albert пишет 05.11.2001 @ 09:24 
Добрый день ! Спасибо за статью - очень понравилась и пригадилась.

Возник вопрос. А именно можно ли вставить динамически формируемое изображение в страницу.
То есть есть скрипт php, который формирует страничку , а в этой страничке надо вставить картинку.
вариант <img src="gif.php"> не очень устраивает, так как слишком много данных надо передавать. Можно ли вставить картинку по-другому, а именно, нечто типа
//main skript
...
...
<img src=
// dinamic create image function
...
....
>

Заранее спасибо
 :::::  viper пишет 05.02.2002 @ 10:48 
смущает немного вот эти переменные как их можно привести к другому ввиду, так что бы была возможность подставить сюда значения для диаграммы, в таком виде как сейчас скрипт не выводит диаграммы пробовал подключать и в html страницу
$title = urldecode($title);
//Данные
$data = urldecode($data);

 :::::  Luda пишет 08.05.2003 @ 16:32 
При использовинии GD в C++, есть возможность научить ее говорить порусски, может кто найдет как это сделать в PHP, если кто знает поделитесь опытом
 :::::  shicoy пишет 23.07.2003 @ 03:17 
Надо прикрутить к GD поддержку TTF скриптов (см. мануал по GD), после чего можно смело писать по-русски. Я такое делал примерно год назад, так что на вскидку не помню, но если очень надо, могу написать статью на эту тему.
 :::::  shicoy пишет 23.07.2003 @ 03:19 
ТТF шрифтов а не скриптов, утро скоро, опечатался
 :::::  Igor/Spb пишет 01.08.2003 @ 23:18 
Подскажите, плз, как прикрутить FreeType к PHP? Тоже, вроде, вариант по выводу кириллицы в PNG/JPEG....
 :::::  tibalt пишет 20.02.2004 @ 11:18 
на www.phpclub.ru в форуме написано про русский язык в ГД
 :::::  Max пишет 04.07.2004 @ 01:05 
Есть вопрос насчет символа ^
кто может подсказать что он значит?
 :::::  Max пишет 04.07.2004 @ 01:06 
Есть вопрос насчет символа ^
кто может подсказать что он значит?
 :::::  Cro$$ пишет 06.01.2005 @ 23:59 
Насчёт поддержки русского текста.
Читайте комментарии:
...

// Преобразование Windows 1251 -> Unicode
function win2uni($s)
{
$s = convert_cyr_string($s,'w','i'); // преобразование win1251 -> iso8859-5
// преобразование iso8859-5 -> unicode:
for ($result='', $i=0; $i<strlen($s); $i++) {
$charcode = ord($s[$i]);
$result .= ($charcode>175)?"&#".(1040+($charcode-176)).";":$s[$i];
}
return $result;
}
//Создаём картинку 214x90
$image = imagecreate(214,90);
//Определяем белый цвет
$white = imagecolorallocate ($image, 255, 255, 255);
//Определяем синий цвет
$blue = imagecolorallocate ($image, 0, 0, 255);
//Текст с использованием функции, написаной выше
$text = win2uni('Синий русский текст');

//Выводим текст с использованием шрифта comicbd.ttf
//Размер - 14
//Угол наклона - 0
//Координаты нижнего левого угла текста - (20,50)
//Цвет - синий
//Ф-я getcwd() - возвращает католог, где лежит данный скрипт.
//Скопируйте шрифт в этот каталог !!!
imagettftext($image, 14, 0, 20, 50, $blue, getcwd()."/arial.ttf", $text);
Header("Content-type: image/png");
//Выводим картинку в вормате PNG
ImagePng($image);
//Освобождаем память, выделенную для изображения
ImageDestroy($image);
...



 :::::  Паша пишет 01.04.2008 @ 14:08 
Спасибо, очень помогла данная статья. Хорошо, когда есть люди, готовые просто и понятно объяснить... респект
Имя:
Email:
URL

Введите сумму двух чисел девять и одинн (девять+одинн=?)
Запомнить мою информацию

* Html запрещен* Ваш E-mail опубликован не будет.

Copyright © 2000-2001 WebScript.Ru nas@webscript.ru
Design © 2001 by Parallax Design Studio (aka Spectator.ru)
Все торговые марки и авторские права на эту страницу принадлежат их соответствующим владельцам.
Сгенерировано за: 0.0171781