그래프 하면 빼놓을 수 없는 파이 차트.

이번 예제는 정적 VML이 아닌, 자바스크립트로 동적으로 그리는 VML되겠다.

 

<html xmlns:v="urn:schemas-microsoft-com:vml">
 <head>
  <style>
   v\:* { behavior: url(#default#VML); }
  </style>
  <script language=javascript>
  <!--//
  function DrawPie()
  {
   var data=new Array(100,300,50,120,200);
   var data_city=new Array("seoul","taegu","daejun","hwachun","busan");
   var sum=0;
   for(i=0;i<data.length;i++){
    sum=sum + data[i];
   }
   var data_pcnt=new Array();
   for(i=0;i<data.length;i++){
    data_pcnt[i]=parseInt(data[i]*100/sum);
   }
   var data_angle=new Array();
   for(i=0;i<data.length;i++){
    data_angle[i]=parseInt(24500000*data_pcnt[i]/100);
   }
   var fColor=new Array(5);
   fColor[0]='#ffcc00';
   fColor[1]='#ffffcc';
   fColor[2]='#ccffee';
   fColor[3]='#ddeecc';
   fColor[4]='#aaccff';
   var pie = document.all["divPie"];
   var sum_angle=0;
   for(i=0;i<data.length;i++){
    pie.insertAdjacentHTML("BeforeEnd", "<v:shape style='z-index:" + i + ";position:absolute; width:400; height:400' strokecolor='gray' fillcolor='" + fColor[i] + "' path='M 200 200 AE 200 200 200 200 " + sum_angle + " " + data_angle[i] + " X E'/>");
    sum_angle=sum_angle + data_angle[i];
   }
   for(i=0;i<data.length;i++){ 
    pie.insertAdjacentHTML("BeforeEnd", "<div style='padding-left:2px;position:absolute;left:200;top:" + 20*(i+2) + ";font-family:Lucida Console;font-size:10px;width:50;height:10;border:none;background:" + fColor[i] + "'>" + data_pcnt[i] + "%</div>");
    pie.insertAdjacentHTML("BeforeEnd", "<div style='position:absolute;left:270;top:" + 20*(i+2) + ";font-family:Lucida Console;font-size:11px;width:50;height:10;border:none;'>" + data_city[i] + "</div>");
   }
  }
  //-->
  </script>
 </head>
 <body onload="DrawPie();">
  <div id="divPie"></div>
 </body>
</html>

 

이 소스를 웹 브라우저로 보면 다음과 같다.



 

'Tech: > VML·SVG' 카테고리의 다른 글

VML 응용: 데이터베이스 모형  (0) 2008.10.01
VML 응용: 별 그리기  (0) 2008.10.01
VML 응용: 막대 그래프  (0) 2008.10.01
VML 응용: 무지개  (0) 2008.10.01
SVG: 패턴(Pattern)  (0) 2008.09.29


Posted by 떼르미
,


자바스크립트를 허용해주세요!
Please Enable JavaScript![ Enable JavaScript ]