Модераторы: Aliance, skyboy, MoLeX, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Круговая диаграмма, помогите исправить ошибку 
:(
    Опции темы
QApple
  Дата 26.6.2009, 13:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 17.4.2009

Репутация: нет
Всего: нет



Помогите найти ошибку в построении круговой диаграммы

Писал по этому примеру: hттp://www.codenet.ru/webmast/php/gd/3D-Pie.php
Но если задать такие значения:
Код

$VALUES=Array(100,200,0,0);
$LEGEND=Array("John","Bob","Alex","Mike");


диаграмма строится не корректно. исправления как советовали там в комментах не помогли. где же всётаки ошибка?
PM MAIL   Вверх
QApple
Дата 29.6.2009, 19:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 17.4.2009

Репутация: нет
Всего: нет



есть тут кто-нибудь? ...
PM MAIL   Вверх
MoLeX
Дата 30.6.2009, 05:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 2
Всего: 140



QApple, приведи весь скрипт а не две строчки из него. Все телепаты ушли в отпуск


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
QApple
Дата 30.6.2009, 08:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 17.4.2009

Репутация: нет
Всего: нет



Писал по этому примеру: hттp://www.codenet.ru/webmast/php/gd/3D-Pie.php
Вот
Код

<?php

// $im - идентификатор изображения
// $VALUES - массив со значениями
// $LEGEND - массив с подписями
function Diagramm($im,$VALUES,$LEGEND) {
    GLOBAL $COLORS,$SHADOWS;

    $black=ImageColorAllocate($im,0,0,0);

    // Получим размеры изображения
    $W=ImageSX($im);                 
    $H=ImageSY($im);

    // Вывод легенды #####################################

    // Посчитаем количество пунктов, от этого зависит высота легенды
    $legend_count=count($LEGEND);

    // Посчитаем максимальную длину пункта, от этого зависит ширина легенды
    $max_length=0;
    foreach($LEGEND as $v) if ($max_length<strlen($v)) $max_length=strlen($v);

    // Номер шрифта, котором мы будем выводить легенду
    $FONT=2;
    $font_w=ImageFontWidth($FONT);
    $font_h=ImageFontHeight($FONT);

    // Вывод прямоугольника - границы легенды ----------------------------

    $l_width=($font_w*$max_length)+$font_h+10+5+10;
    $l_height=$font_h*$legend_count+10+10;

    
    // Получим координаты верхнего левого угла прямоугольника - границы легенды
    $l_x1=$W-10-$l_width;
    $l_y1=($H-$l_height)/2;

    // Выводя прямоугольника - границы легенды
    ImageRectangle($im, $l_x1, $l_y1, $l_x1+$l_width, $l_y1+$l_height, $black);

    // Вывод текст легенды и цветных квадратиков
    $text_x=$l_x1+10+5+$font_h;
    $square_x=$l_x1+10;
    $y=$l_y1+10;

    $i=0;
    foreach($LEGEND as $v) {
        $dy=$y+($i*$font_h);
        ImageString($im, $FONT, $text_x, $dy, $v, $black);
        ImageFilledRectangle($im,
                             $square_x+1,$dy+1,$square_x+$font_h-1,$dy+$font_h-1,
                             $COLORS[$i]);
        ImageRectangle($im,
                       $square_x+1,$dy+1,$square_x+$font_h-1,$dy+$font_h-1,
                       $black);
        $i++;
        }

    // Вывод круговой диаграммы ----------------------------------------

    $total=array_sum($VALUES);
    $anglesum=$angle=Array(0);
    $i=1;

    // Расчет углов
do 
{
$part=$VALUES[$i-1]/$total;
$angle[$i]=floor($part*360);
$anglesum[$i]=array_sum($angle);
$i++;
}
while ($i<count($VALUES));
    $anglesum[]=$anglesum[0];

    // Расчет диаметра
    $diametr=$l_x1-10-10;

    // Расчет координат центра эллипса
    $circle_x=($diametr/2)+10;
    $circle_y=$H/2-10;

    // Поправка диаметра, если эллипс не помещается по высоте
    if ($diametr>($H*2)-10-10) $diametr=($H*2)-20-20-40;

    // Вывод тени
for ($j=60;$j>0;$j--)
for ($i=0;$i<count($anglesum)-1;$i++)
if ($anglesum[$i]!=$anglesum[$i+1]) ImageFilledArc($im,$circle_x,$circle_y+$j,
$diametr,$diametr/2,
$anglesum[$i],$anglesum[$i+1],
$SHADOWS[$i],IMG_ARC_PIE);

// Вывод круговой диаграммы
for ($i=0;$i<count($anglesum)-1;$i++)
if ($anglesum[$i]!=$anglesum[$i+1]) ImageFilledArc($im,$circle_x,$circle_y,
$diametr,$diametr/2,
$anglesum[$i],$anglesum[$i+1],
$COLORS[$i],IMG_ARC_PIE);
}

// Зададим значение и подписи
$VALUES=Array(100,200,0,0);
$LEGEND=Array("John","Bob","Alex","Mike");

// Создадим изображения
header("Content-Type: image/png");
$im=ImageCreate(500,500);

// Зададим цвет фона. Немного желтоватый, для того, чтобы было
// видно границы изображения на белом фоне.
$bgcolor=ImageColorAllocate($im,255,255,200);

// Зададим цвета элементов
$COLORS[0] = imagecolorallocate($im, 255, 203, 3);
$COLORS[1] = imagecolorallocate($im, 220, 101, 29);
$COLORS[2] = imagecolorallocate($im, 189, 24, 51);
$COLORS[3] = imagecolorallocate($im, 214, 0, 127);
$COLORS[4] = imagecolorallocate($im, 98, 1, 96);
$COLORS[5] = imagecolorallocate($im, 0, 62, 136);
$COLORS[6] = imagecolorallocate($im, 0, 102, 179);
$COLORS[7] = imagecolorallocate($im, 0, 145, 195);
$COLORS[8] = imagecolorallocate($im, 0, 115, 106);
$COLORS[9] = imagecolorallocate($im, 178, 210, 52);
$COLORS[10] = imagecolorallocate($im, 137, 91, 74);
$COLORS[11] = imagecolorallocate($im, 82, 56, 47);

// Зададим цвета теней элементов
$SHADOWS[0] = imagecolorallocate($im, 205, 153, 0);
$SHADOWS[1] = imagecolorallocate($im, 170, 51, 0);
$SHADOWS[2] = imagecolorallocate($im, 139, 0, 1);
$SHADOWS[3] = imagecolorallocate($im, 164, 0, 77);
$SHADOWS[4] = imagecolorallocate($im, 48, 0, 46);
$SHADOWS[5] = imagecolorallocate($im, 0, 12, 86);
$SHADOWS[6] = imagecolorallocate($im, 0, 52, 129);
$SHADOWS[7] = imagecolorallocate($im, 0, 95, 145);
$SHADOWS[8] = imagecolorallocate($im, 0, 65, 56);
$SHADOWS[9] = imagecolorallocate($im, 128, 160, 2);
$SHADOWS[10] = imagecolorallocate($im, 87, 41, 24);
$SHADOWS[11] = imagecolorallocate($im, 32, 6, 0);

// Вызов функции рисования диаграммы
Diagramm($im,$VALUES,$LEGEND);

// Генерация изображения
ImagePNG($im);
?>



PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Графика | Следующая тема »


 




[ Время генерации скрипта: 0.0556 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.