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

Форум PHP

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

 

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

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

тема: Построение срузу нескольких круговых диаграмм
 
 автор: maxfade   (24.12.2008 в 11:34)   письмо автору
 
 

Добрый день, воспользовался данным скриптом: http://www.softtime.ru/forum/read.php?id_forum=7&id_theme=16206

Вопрос в том, как мне вывести сразу несколько диаграмм (пример измененного скрипта смотри ниже)?

Пробовал вставлять два раз кусок кода + изменять значения $sector, получаю, что в таблице (легенде) данные меняются а диаграмма копируется.

Измененный скрипт:

<?php

$h 
$w 350;
//Цвета секторов (всего 15).
$r[] = 75$g[] = 188$b[] = 0;
$r[] = 215$g[] = 255$b[] = 94;
$r[] = 255$g[] = 181$b[] = 94;
$r[] = 255$g[] = 111$b[] = 111;
$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;


      
$sector['Удовлетворен'] = 80;
      
$sector['Скорее "Да" чем "Нет"'] = 30;
      
$sector['Скорее "Нет" чем "Да"'] = 15;
      
$sector['Не Удовлетворен'] = 10;
      
$sum 135;


  
//или рисуем диаграмму
  
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>
    <table>
    <tr>
    <td><img src="
.$_SERVER['PHP_SELF']."?img=diagram></td>
    <td><table border='0' cellpadding='3' cellspacing='0'>
      <tr align='center'>
        <td width='20px'></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> 
$key </td>
            <td> 
$val </td>
            <td> "
.sprintf("%.2f",($val/$sum*100))." % </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($imgNULL100);
  }
  
//или выводим таблицу
  
else
  {
     
$table .="
    </table></td>
    </tr>
    </table>
    </body>
    </html>"
;
     echo 
$table;
  }






 
// Начало построения второй диаграммы  *****************************


      
$sector['Удовлетворен'] = 300;
      
$sector['Скорее "Да" чем "Нет"'] = 30;
      
$sector['Скорее "Нет" чем "Да"'] = 15;
      
$sector['Не Удовлетворен'] = 65;
      
$sum 400;




  
//или рисуем диаграмму
  
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>
    <table>
    <tr>
    <td><img src="
.$_SERVER['PHP_SELF']."?img=diagram></td>
    <td><table border='0' cellpadding='3' cellspacing='0'>
      <tr align='center'>
        <td width='20px'></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> 
$key </td>
            <td> 
$val </td>
            <td> "
.sprintf("%.2f",($val/$sum*100))." % </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($imgNULL100);
  }
  
//или выводим таблицу
  
else
  {
     
$table .="
    </table></td>
    </tr>
    </table>
    </body>
    </html>"
;
     echo 
$table;
  }

?>

  Ответить  
Rambler's Top100
вверх

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