当前位置:Gxlcms > html代码 > 使用html实现简单的柱状图效果

使用html实现简单的柱状图效果

时间:2021-07-01 10:21:17 帮助过:72人阅读

由于本人写完之后没有进行整理,所以里边代码结构不是很合理,请大家见谅,另外里边的画图的坐标,也是一边画一边调整的,仅供大家参考

效果图:

1.jpg

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title>绘制柱状图</title>
  6. </head>
  7. <body>
  8. <p style="margin: 0 auto; width:800px; height:400px">
  9. <canvas id="can1" width="800" height="400">
  10. </canvas>
  11. <table border="1" style="width: 800px" id="tab1">
  12. <caption>会员数的变化</caption>
  13. <thead>
  14. <th>公元</th>
  15. <th>2003年</th>
  16. <th>2004年</th>
  17. <th>2005年</th>
  18. <th>2006年</th>
  19. <th>2007年</th>
  20. <th>2008年</th>
  21. <th>2009年</th>
  22. </thead>
  23. <tbody>
  24. <tr style="text-align: center">
  25. <th>会员数</th>
  26. <td>230</td>
  27. <td>360</td>
  28. <td>459</td>
  29. <td>654</td>
  30. <td>834</td>
  31. <td>956</td>
  32. <td>1085</td>
  33. </tr>
  34. </tbody>
  35. </table>
  36. </p>
  37. <script type="text/javascript">
  38. var can1=document.getElementByIdx_x_x("can1");
  39. var cxt=can1.getContext("2d");
  40. var cw=parseInt(can1.width);
  41. var ch=parseInt(can1.height);
  42. var basex=0;
  43. var basey=30;
  44. var gx=cw*0.8;
  45. var gy=ch*0.8;
  46. //第一步:绘制背景
  47. cxt.fillStyle="#eeeeee";
  48. cxt.fillRect(basex,basey,gx,gy);
  49. //第二步:下边我们获取我们表头当中的年份信息
  50. var tab1=document.getElementByIdx_x_x("tab1");
  51. var head_cells=tab1.tHead.rows[0].cells;
  52. var head=[];
  53. for(var i=1;i
  54. //获取年份写入到到我们的head数组当中
  55. head.push(head_cells[i].innerHTML);
  56. }
  57. //第三步:取得我们表当中的信息(取得第一个tbody的第一行的所有数据)
  58. var value_cells=tab1.tBodies[0].rows[0].cells;
  59. var value=[];
  60. for(var j=1;j
  61. var v=value_cells[j].innerHTML;
  62. //这里要注意进行类型转换,否则后边会出现莫名其妙的错误,像后面的求最大值,会出现错误
  63. v=parseInt(v);
  64. value.push(v);
  65. }
  66. //第四步:找出我们数据当中的最大的值,以便我们进行坐标的分配
  67. var max_value=0;
  68. for(var m=0;m
  69. if(value[m]>max_value){
  70. max_value=value[m];
  71. }
  72. }
  73. //第五步:绘制我们的坐标轴
  74. cxt.beginPath();
  75. cxt.fillStyle="black";
  76. cxt.lineWidth=2;
  77. //移动到我们图中所谓的坐标原点
  78. cxt.moveTo(0,0);
  79. //画纵轴
  80. cxt.lineTo(0,gy+basey);
  81. //画横轴
  82. cxt.lineTo(cw,gy+basey);
  83. cxt.stroke();
  84. //第六步:开始进行绘制,绘制标题的同时绘制数据
  85. //首先计算一下我们每个数值所代表的像素长度
  86. var each_len=gy*0.8/max_value;
  87. //计算横轴上每个方块所占的长度
  88. var each_room=gx*0.8/value.length;
  89. //开始绘制
  90. for(var h=0;h
  91. //开始绘制
  92. //1,绘制年份
  93. cxt.fillText(head[h],each_room*h+30,gy+basey*1.5);
  94. //33里边的方块宽度,这是一边画一边调的,所以很乱,大家可以自己调整
  95. cxt.fillRect(each_room*h+30,gy+basey-value[h]*each_len,33,value[h]*each_len);
  96. }
  97. </script>
  98. </body>
  99. </html>

相关文章:

html5生成柱状图(条形图)效果的实例代码

使用HTML5 Canvas画柱状图

以上就是使用html实现简单的柱状图效果的详细内容,更多请关注Gxl网其它相关文章!

人气教程排行