asimryu

canvas line chart sample

Jul 24th, 2014
348
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
HTML 5 2.33 KB | None | 0 0
  1. <html>
  2.  <head>
  3.     <meta charset="utf-8">
  4.     <style>
  5.         #data {margin-bottom:20px;}
  6.         #data ul {padding:0;margin:0;clear:both;list-style:none;}
  7.         #data ul li {float:left;width:100px;height:30px;text-align:center;border-bottom:1px solid #888;line-height:30px;}
  8.         #data ul.data-header li {background-color:#ddd;border-top:1px solid #888;}
  9.         #canvasbox {width:300px;height:150px;padding:10px;border:1px solid #000;margin-top:50px;}
  10.     </style>
  11.  </head>
  12.  <body>
  13.     <h1>웹디자인 및 개발 평가전 점수 통계</h1>
  14.     <div id="data">
  15.         <ul class="data-header">
  16.             <li>이름</li>
  17.             <li>7월</li>
  18.             <li>8월</li>
  19.             <li>9월</li>
  20.             <li>10월</li>
  21.         </ul>
  22.         <ul class="data-row" data-color="#0000ff">
  23.             <li class="data-name">홍길동</li>
  24.             <li class="data-month">0</li>
  25.             <li class="data-month">90</li>
  26.             <li class="data-month">65</li>
  27.             <li class="data-month">88</li>
  28.         </ul>
  29.         <ul class="data-row" data-color="#ff0000">
  30.             <li class="data-name">김개똥</li>
  31.             <li class="data-month">66</li>
  32.             <li class="data-month">96</li>
  33.             <li class="data-month">57</li>
  34.             <li class="data-month">95</li>
  35.         </ul>
  36.     </div>
  37.     <div id="canvasbox"><canvas id="mycanvas" width="300" height="150"></canvas></div>
  38.     <script src="http://code.jquery.com/jquery-1.11.1.js"></script>
  39.     <script>
  40.         var canvas = document.getElementById("mycanvas");
  41.         var canvasWidth = 300;
  42.         var canvasHeight = 150;
  43.         var valueLimit = 100;
  44.         var rows = $("#data .data-row");
  45.         if(rows.length && canvas.getContext) {
  46.             for(var i=0;i<rows.length;i++){
  47.                 var x = 0;
  48.                 var lineColor = $(rows[i]).attr("data-color");
  49.                 var ctx = canvas.getContext("2d");
  50.                 ctx.beginPath();
  51.                 ctx.lineWidth = 2;
  52.                 ctx.strokeStyle = lineColor;
  53.                 var monthData = $(rows[i]).children("li.data-month");
  54.                 var xWidth = parseInt(canvasWidth / (monthData.length - 1));
  55.                 for(var j=0;j<monthData.length;j++){
  56.                     var tmpData = parseInt( $(monthData[j]).html() );
  57.                     var tmpY = parseInt( (tmpData*canvasHeight)/valueLimit );
  58.                     var y = canvasHeight - tmpY;
  59.                     if(j==0){
  60.                         ctx.moveTo(x, y);
  61.                     } else {
  62.                         ctx.lineTo(x, y);
  63.                         ctx.stroke();
  64.                     }
  65.                     if(j == (monthData.length -1)){
  66.                         ctx.fillText(tmpData, x-15, y);
  67.                     } else {
  68.                         ctx.fillText(tmpData, x, y);
  69.                     }
  70.                     x = x + xWidth;
  71.                 }
  72.             }
  73.         }
  74.     </script>
  75.  </body>
  76. </html>
Advertisement
Add Comment
Please, Sign In to add comment