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


本文摘自PHP中文网,作者阿神,侵删。

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

效果图:

1.jpg

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

<!DOCTYPE html>

<html>

<head>

    <meta charset="utf-8">

    <title>绘制柱状图</title>

</head>

<body>

<p style="margin: 0 auto; width:800px; height:400px">

    <canvas id="can1" width="800" height="400">

 

    </canvas>

    <table border="1" style="width: 800px" id="tab1">

        <caption>会员数的变化</caption>

        <thead>

            <th>公元</th>

            <th>2003年</th>

            <th>2004年</th>

            <th>2005年</th>

            <th>2006年</th>

            <th>2007年</th>

            <th>2008年</th>

            <th>2009年</th>

        </thead>

        <tbody>

            <tr style="text-align: center">

                <th>会员数</th>

                <td>230</td>

                <td>360</td>

                <td>459</td>

                <td>654</td>

                <td>834</td>

                <td>956</td>

                <td>1085</td>

            </tr>

        </tbody>

    </table>

</p>

<script type="text/javascript">

    var can1=document.getElementByIdx_x_x("can1");

    var cxt=can1.getContext("2d");

 

    var cw=parseInt(can1.width);

    var ch=parseInt(can1.height);

 

    var basex=0;

    var basey=30;

 

    var gx=cw*0.8;

    var gy=ch*0.8;

 

    //第一步:绘制背景

    cxt.fillStyle="#eeeeee";

    cxt.fillRect(basex,basey,gx,gy);

 

    //第二步:下边我们获取我们表头当中的年份信息

    var tab1=document.getElementByIdx_x_x("tab1");

    var head_cells=tab1.tHead.rows[0].cells;

    var head=[];

    for(var i=1;i

        //获取年份写入到到我们的head数组当中

        head.push(head_cells[i].innerHTML);

    }

 

    //第三步:取得我们表当中的信息(取得第一个tbody的第一行的所有数据)

    var value_cells=tab1.tBodies[0].rows[0].cells;

    var value=[];

    for(var j=1;j

        var v=value_cells[j].innerHTML;

        //这里要注意进行类型转换,否则后边会出现莫名其妙的错误,像后面的求最大值,会出现错误

        v=parseInt(v);

        value.push(v);

    }

 

    //第四步:找出我们数据当中的最大的值,以便我们进行坐标的分配

    var max_value=0;

 

    for(var m=0;m

        if(value[m]>max_value){

            max_value=value[m];

        }

    }

 

    //第五步:绘制我们的坐标轴

    cxt.beginPath();

    cxt.fillStyle="black";

    cxt.lineWidth=2;

    //移动到我们图中所谓的坐标原点

    cxt.moveTo(0,0);

    //画纵轴

    cxt.lineTo(0,gy+basey);

    //画横轴

    cxt.lineTo(cw,gy+basey);

    cxt.stroke();

 

    //第六步:开始进行绘制,绘制标题的同时绘制数据

 

    //首先计算一下我们每个数值所代表的像素长度

    var each_len=gy*0.8/max_value;

 

    //计算横轴上每个方块所占的长度

    var each_room=gx*0.8/value.length;

 

    //开始绘制

    for(var h=0;h

 

        //开始绘制

        //1,绘制年份

        cxt.fillText(head[h],each_room*h+30,gy+basey*1.5);

        //33里边的方块宽度,这是一边画一边调的,所以很乱,大家可以自己调整

        cxt.fillRect(each_room*h+30,gy+basey-value[h]*each_len,33,value[h]*each_len);

 

    }

</script>

</body>

</html>

相关文章:

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

使用HTML5 Canvas画柱状图

以上就是使用html实现简单的柱状图效果的详细内容,更多文章请关注木庄网络博客

相关阅读 >>

Html怎么引用css文件

Html background 背景图片平铺充满整个页面

Html文本格式化的实例详解

Html标记是什么

Html表单有哪些标记

Html output标签怎么用

Html如何设置文字颜色白色

Html中如何引入css

Html实现实时效果查看功能

Html s标签怎么用

更多相关阅读请进入《Html》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...