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
Форумы портала PHP.SU :: Версия для печати :: проблема с круговой диаграммой (статья)
Форумы портала PHP.SU » Разное » Обсуждение статей » проблема с круговой диаграммой (статья)

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

1. Jlblcblu - 23 Марта, 2010 - 03:10:29 - перейти к сообщению
Статья

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

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

Подскажите как исправить это, пожалуйста.
2. Champion - 23 Марта, 2010 - 08:47:53 - перейти к сообщению
А дуга с нулевым углом плохо рисуется? Попробуй там где считаются углы, поставить continue, если part == 0
3. Jlblcblu - 23 Марта, 2010 - 14:08:23 - перейти к сообщению
Champion пишет:
А дуга с нулевым углом плохо рисуется? Попробуй там где считаются углы, поставить continue, если part == 0


К сожалению это не помогло. Скрипт зависает вовсе.
Пример входных данных:
4. Champion - 23 Марта, 2010 - 14:19:34 - перейти к сообщению
5. Jlblcblu - 23 Марта, 2010 - 19:01:18 - перейти к сообщению
Оказалась все не очень сложно, но это надо было поймать.

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

То при выводе диаграммы мы рисуем первым цветом. А так как 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.  


Может кому-то поможет, может кто-то исправит иначе. Но главное - работает.
Спасибо за то, что хоть кто-то откликнулся.
6. while - 21 Марта, 2012 - 21:53:49 - перейти к сообщению
не хочет нормально работать, если в массиве данные например:
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.  

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

 

Powered by ExBB FM 1.0 RC1