Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: проблема с круговой диаграммой (статья)

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Jlblcblu
Отправлено: 23 Марта, 2010 - 03:10:29
Post Id



Новичок


Покинул форум
Сообщений всего: 36
Дата рег-ции: Март 2010  


Помог: 1 раз(а)




Статья

Все работает хорошо.. до тех пор пока в данных не появится 0.

Ведь может быть такая ситуация, что одна из переменных равна 0 и отображать на диаграмме не надо ее.

Подскажите как исправить это, пожалуйста.
 
 Top
Champion Супермодератор
Отправлено: 23 Марта, 2010 - 08:47:53
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




А дуга с нулевым углом плохо рисуется? Попробуй там где считаются углы, поставить continue, если part == 0
 
 Top
Jlblcblu
Отправлено: 23 Марта, 2010 - 14:08:23
Post Id



Новичок


Покинул форум
Сообщений всего: 36
Дата рег-ции: Март 2010  


Помог: 1 раз(а)




Champion пишет:
А дуга с нулевым углом плохо рисуется? Попробуй там где считаются углы, поставить continue, если part == 0


К сожалению это не помогло. Скрипт зависает вовсе.
Пример входных данных:
 
 Top
Champion Супермодератор
Отправлено: 23 Марта, 2010 - 14:19:34
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




 
 Top
Jlblcblu
Отправлено: 23 Марта, 2010 - 19:01:18
Post Id



Новичок


Покинул форум
Сообщений всего: 36
Дата рег-ции: Март 2010  


Помог: 1 раз(а)




Оказалась все не очень сложно, но это надо было поймать.

Если у нас массив

То при выводе диаграммы мы рисуем первым цветом. А так как 2 последующих угла не меняются, например, то мы "прям поверх" зарисовываем часть эллипса следующими цветами. Вот он наш мини баг)

Исправил добавлением условия при выводе. Там сравнивается текущий угол и следующий. Если они равны то не рисовать) Все просто.

PHP:
скопировать код в буфер обмена
  1.  
  2.         // Вывод тени
  3.         for ($j=20;$j>0;$j--)
  4.                 for ($i=0;$i<count($anglesum)-1;$i++)
  5.                         if ($anglesum[$i+1]!=$anglesum[$i]){
  6.                         ImageFilledArc($im,$circle_x,$circle_y+$j,
  7.                                $diametr,$diametr/2,
  8.                                $anglesum[$i],$anglesum[$i+1],
  9.                                $SHADOWS[$i],IMG_ARC_PIE);}
  10.  
  11.         // Вывод круговой диаграммы
  12.         for ($i=0;$i<count($anglesum)-1;$i++)
  13.                 if ($anglesum[$i+1]!=$anglesum[$i]){
  14.                 ImageFilledArc($im,$circle_x,$circle_y,
  15.                            $diametr,$diametr/2,
  16.                            $anglesum[$i],$anglesum[$i+1],
  17.                            $COLORS[$i],IMG_ARC_PIE);}
  18.         }
  19.  


Может кому-то поможет, может кто-то исправит иначе. Но главное - работает.
Спасибо за то, что хоть кто-то откликнулся.
 
 Top
while
Отправлено: 21 Марта, 2012 - 21:53:49
Post Id


Новичок


Покинул форум
Сообщений всего: 1
Дата рег-ции: Март 2012  


Помог: 0 раз(а)




не хочет нормально работать, если в массиве данные например:
PHP:
скопировать код в буфер обмена
  1.  
  2. $VALUES =       Array(1,0,0,0);
  3. $VALUES =       Array(0,1,0,0);
  4. $VALUES =       Array(0,0,1,0);
  5.  

Например, если такие данные, то
PHP:
скопировать код в буфер обмена
  1.  
  2. $VALUES=Array(0,1,0,0);
  3. $LEGEND=Array("John","Bob","Alex","Piter");
  4.  

получается такая неверная диаграмма(см.скрин)
Если знаете как исправить, то подскажите пожалуйста.
Прикреплено изображение (Нажмите для увеличения)
test.png

(Отредактировано автором: 21 Марта, 2012 - 21:54:18)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Обсуждение статей »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB