| Добрый день, воспользовался данным скриптом: 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($img, 255, 255, 255);
imagefill($img, 1, 1, $white);
$background = imagecolorallocate($img, 240, 240, 240);
$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($img, NULL, 100);
}
//или выводим таблицу
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($img, 255, 255, 255);
imagefill($img, 1, 1, $white);
$background = imagecolorallocate($img, 240, 240, 240);
$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($img, NULL, 100);
}
//или выводим таблицу
else
{
$table .="
</table></td>
</tr>
</table>
</body>
</html>";
echo $table;
}
?>
|
| |