Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Круговая диаграмма
 
 автор: sidPR   (03.04.2007 в 16:47)   письмо автору
 
 

Народ помогите плиз нужно все что возможно насчет построения их средствами PHP ток чтоб самое изображение было гладкое краяя особенно... также буду признателен увидеть исходники которые строят эти диаграммы из данных чисел.. ..

P.S. поихскал по вашему форуму нашел пару примеров но не смог запустить и увидеть изображении вместо него выводилость чтото типо

‰PNG  IHDR,,NЈ~G6PLTEяяяяЛЬeЅ3Ц

   
 
 автор: Trianon   (03.04.2007 в 16:56)   письмо автору
 
   для: sidPR   (03.04.2007 в 16:47)
 

Старый IE не показывает PNG-изображения. Формируйте GIF.

   
 
 автор: Саня   (03.04.2007 в 16:57)   письмо автору
 
   для: sidPR   (03.04.2007 в 16:47)
 

Сначала отошлите заголовок Content-Type.

   
 
 автор: sidPR   (03.04.2007 в 17:06)   письмо автору
 
   для: Саня   (03.04.2007 в 16:57)
 

IE6 FF opera9 пишут либо изображение содержит ошибочки либо выводит так .. все примеры что я нашел на форуме так вот показывает :( может кто покажет примерчик у которого он работает на машинке?

   
 
 автор: Trianon   (03.04.2007 в 17:43)   письмо автору
 
   для: sidPR   (03.04.2007 в 17:06)
 

Задача 16 из одноименного раздела имеет один такой пример.

   
 
 автор: tmarino   (03.04.2007 в 19:48)   письмо автору
 
   для: Trianon   (03.04.2007 в 17:43)
 

Здравствуйте, интересует такой вопрос если точечные диаграммы и круговые проблем не составляют составить на PHP то реально ли составить диаграмму "Парето"
За основу берется столбиковая диаграмма
C видом подобных диаграмм можно ознакомится на этом примере:
http://www.bio.ru/stat/p3a.gif
http://www.metrologie.ru/paretto2.gif

боле менее подробное описание

http://www.center.ru/riasite/index.phtml?tbl=tb_88&id=451

Может есть смысл опубликовать задачю на эту тему.. хотя существует множество подобных диаграмма , гистаграмм, графикам...

   
 
 автор: sidPR   (03.04.2007 в 22:03)   письмо автору
 
   для: tmarino   (03.04.2007 в 19:48)
 

Я в шоке объясните почему у меня так выводит??... может у меня чтото не так

   
 
 автор: cheops   (04.04.2007 в 12:07)   письмо автору
 
   для: sidPR   (03.04.2007 в 22:03)
 

Обращайтесь непосредственно к изображению, т.е. к файлу, который прописан в атрибуте src тэга <img> - что там? Выводятся какие-нибудь сообщения об ошибках?

   
 
 автор: sidPR   (04.04.2007 в 13:56)   письмо автору
 
   для: cheops   (04.04.2007 в 12:07)
 

?img=diagram

   
 
 автор: Trianon   (04.04.2007 в 14:03)   письмо автору
 
   для: sidPR   (04.04.2007 в 13:56)
 

прикрепите скрипт в архиве.

   
 
 автор: sidPR   (04.04.2007 в 15:54)   письмо автору
 
   для: Trianon   (04.04.2007 в 14:03)
 

http://softtime.ru/info/task.php?id_article=88

   
 
 автор: Trianon   (04.04.2007 в 15:56)   письмо автору
 
   для: sidPR   (04.04.2007 в 15:54)
 

по-моему, это я предложил Вам туда заглянуть.
Интерес представлял не этот, а именно тот, который у Вас.

   
 
 автор: sidPR   (04.04.2007 в 16:15)   письмо автору
 
   для: Trianon   (04.04.2007 в 15:56)
 

Все тоже самое :)


<?php 
$fileN 
"data.dat"
$h $w 300
//Цвета секторов (всего 15). 
$r[] = 72$g[] = 209$b[] = 204
$r[] = 199$g[] = 21$b[] = 133
$r[] = 25$g[] = 25$b[] = 112
$r[] = 245$g[] = 255$b[] = 250
$r[] = 255$g[] = 228$b[] = 225
$r[] = 255$g[] = 228$b[] = 118
$r[] = 255$g[] = 222$b[] = 173
$r[] = 0$g[] = 0$b[] = 128
$r[] = 253$g[] = 245$b[] = 230
$r[] = 255$g[] = 165$b[] = 0
$r[] = 218$g[] = 112$b[] = 114
$r[] = 205$g[] = 133$b[] = 63
$r[] = 255$g[] = 0$b[] = 0
$r[] = 0$g[] = 255$b[] = 0
if (
is_file($fileN)) 

  
$fd fopen($fileN"r"); 
  
$sum 0
  while (!
feof($fd)) 
  { 
    
$a trim(fgets($fd)); 
    
//Отбрасываю пустые строки 
    
if (!empty($a)) 
    { 
      
//В $exp[1] - название, в $exp[0] - кол-во. 
      
$exp explode(" "$a); 
      
$sector[$exp[1]] = $exp[0]; 
      
$sum += $exp[0]; 
    } 
  } 
  
fclose($fd); 
  
//или рисуем диаграмму 
  
if (isset($_GET['img'])) 
  { 
    
$img imagecreatetruecolor($w+1,$h+1); 
    if (!
$img) exit; 
    
$white imagecolorallocate($img255255255); 
    
imagefill($img11$white); 
    
$background imagecolorallocate($img240240240); 
    
$cx $cy $h/2
    
imagefilledellipse($img ,$cx$cy$w ,$h$background); 
  } 
  
//или выводим таблицу 
  
else 
  { 
    
$table "<html><head><title>диаграмма</title></head> 
<body> 
<img src="
.$_SERVER['PHP_SELF']."?img=diagram> 
<table border=1 cellpadding='3' cellspacing='0'> 
  <tr align='center'> 
    <td> цвет </td> 
    <td> кол-во </td> 
    <td> % </td> 
    <td> пояснение </td> 
  </tr>"

  } 
  
$start 0;      //Начальный угол 
  
$ostatok 0;    //Здесь размер непрорисованных секторов. 
  
$i 0;          //Сётчик 
  // В $key - название, в $val - кол-во. 
  
foreach ($sector as $key =>$val
  { 
    
$ugol $val $sum 360
    
//Сектор < 2% (2% от 360 = 7.2). 
    
if ($ugol 7.2
    { 
      
//или рисуем диаграмму 
      
if  (isset($_GET['img'])) 
      { 
        
$color =  imagecolorallocate($img$r[$i], $g[$i], $b[$i]); 
        
$angle_sector $start $ugol $ostatok
        
imagefilledarc($img ,$cx$cy$w$h$start$angle_sector$color"IMG_ARC_PIE"); 
        
$start += $ugol
      } 
      
//или выводим таблицу 
      
else 
      { 
        
$table .= 
  <tr align='center'> 
    <td bgcolor='"
.sprintf("#%02x%02x%02x"$r[$i], $g[$i], $b[$i])."'></td> 
    <td> 
$val </td> 
    <td> "
.sprintf("%.2f",($val/$sum*100))." % </td> 
    <td> 
$key </td> 
  </tr>"

      } 
      
$i++; 
    } 
    else 
    { 
      
//Не прорисованный сектор 
      
$ostatok += $ugol
      
$table .= 
  <tr align='center'> 
    <td> нет </td> 
    <td> 
$val </td> 
    <td> "
.sprintf("%.2f",($val/$sum*100))." % </td> 
    <td> 
$key </td> 
  </tr>"

    } 
    
//Если секторов >= 15. 
    
if ($i >= 15) break; 
  } 
  
//или рисуем диаграмму 
  
if (isset($_GET['img'])) 
  { 
    
header ("Content-type: image/jpeg"); 
    
imagejpeg($img); 
  } 
  
//или выводим таблицу 
  
else 
  { 
     
$table .=
</table> 
</body> 
</html>"

     echo 
$table
  } 

else {echo 
"файл data.dat не найден";exit;} 
?> 

   
 
 автор: Trianon   (04.04.2007 в 16:22)   письмо автору
 
   для: sidPR   (04.04.2007 в 16:15)
 

1. Этот скрипт требует файл data.dat
2. Я попросил в архиве не просто так. Это единственный способ убедиться, что Вы при копировании не натолкали в начало пробелов или пустых строк.
3. У меня этот скрипт работает. см аттач.

   
 
 автор: sidPR   (04.04.2007 в 17:04)   письмо автору
 
   для: Trianon   (04.04.2007 в 16:22)
 

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

и еще она ужасно выглядит ? я видел где риализованная с мягкими кроями ... плавными... а тут одни пиксели :(

   
 
 автор: Trianon   (04.04.2007 в 17:52)   письмо автору
 
   для: sidPR   (04.04.2007 в 17:04)
 

Потому что весь этот комментарий вылез перед кодом картинки.
Комментарии к скриптам помещают внутрь тега <?php ?>
Можно сделать более приемлемо, если формировать не .jpg, а .gif-файл строками

    header ("Content-type: image/gif");  
    imagegif($img);  

в соответствующем месте скрипта.
См.аттач.

   
 
 автор: sidPR   (04.04.2007 в 21:13)   письмо автору
 
   для: Trianon   (04.04.2007 в 17:52)
 

а качество круга улучшить возможно?

   
 
 автор: Trianon   (04.04.2007 в 21:19)   письмо автору
 
   для: sidPR   (04.04.2007 в 21:13)
 

Врядли. Разве что круг поверх вывести.
$color = imagecolorallocate($img, 0, 0, 0);
imageellipse($img,$cx,$cy,$w,$h, $color);
перед imagegif()

   
 
 автор: sidPR   (14.04.2007 в 13:46)   письмо автору
 
   для: Trianon   (04.04.2007 в 21:19)
 

Люди добрые подскажите плиз где достать функцию или библиотеку мне нужно просто по результатм построить круговую диаграммку но исключительно чтобы оны была четкая с плавными гранями и не обрубками пикселей по краям... пожалуйста может ктото уже заморачивался на эту тему...


P.S. слышал еще о выводе средствами PHP флеш заставок или чтото подобное ???? может поможет???

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования