柱状图案例
来源:互联网 发布:js 清除cookie 编辑:程序博客网 时间:2024/05/21 07:04
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0"> <title>柱状图案例</title> <style> body { padding: 0; margin: 0; background-color: #f0f0f0; overflow: hidden; } </style> <script src="lib/js/konva/konva.js"></script></head><body> <div id="container"> </div> <script> //第一步:创建舞台 var stage = new Konva.Stage({ container:'container', width:window.innerWidth,//全屏 height:window.innerHeight }); //第二步:创建层 var layer = new Konva.Layer();//创建一个层 stage.add(layer);//把层添加到舞台 //中心点坐标 var cenX = stage.width()/2; var cenY = stage.height()/2; //柱状图的数据 var data = [ {name:'前端',value:'.8',color:'green'}, {name:'PHP',value:'.3',color:'blue'}, {name:'JAVA',value:'.7',color:'red'}, {name:'UI',value:'.9',color:'orange'}, {name:'IOS',value:'.4',color:'purple'}, {name:'Android',value:'.9',color:'teal'}, ]; //x:从1/8*x,3/4 //y:3/4高度 var x0 = (1/8)*stage.width(); //柱状图原点坐标 var y0 = 3/4*stage.height(); // var width = 3/4*stage.width(); //柱状图最大宽度 var height = 1/2*stage.height(); // //绘制底线 var bsLine = new Konva.Line({ points:[x0,y0,x0+width,y0], strokeWidth:1, stroke:'lightgreen', }); //把矩形添加到层 layer.add(bsLine); //定义 矩形和矩形两边的边距的宽度 var rectWidth = width / data.length; //绘制柱状图的矩形:遍历每一条数据然后生成一个矩形 data.forEach(function(item,index){ var rect = new Konva.Rect({ x: x0 + (1/4+index)*rectWidth, y: y0 - item.value*height, width:1/2*rectWidth, height:item.value*height, fill:item.color, opacity:.8, cornerRadius:10 }); layer.add(rect); //把百分比的文字放到柱状图的顶部 var text = new Konva.Text({ x:x0+index*rectWidth, y:y0-item.value*height-14, fontSize:14, text:item.value*100+'%', width:rectWidth, align:'center', fill:item.color, name:'textPercent' }); layer.add(text); var group = new Konva.Group({ x:x0 + (1/2+index)*rectWidth, y:y0, }); //把文字放到柱状图的底部 var textBottom = new Konva.Text({ x:0, y:0, fontSize:14, text:item.name, fill:item.color, rotation:30, }); group.add(textBottom); layer.add(group); }); //把层渲染到舞台上 layer.draw(); //做一个动画 //点击任何舞台区域的时候会触发下面的事件 stage.on('contentClick',function(){ //让柱状图进行动画展示 //让柱状图中的所有矩形高度全为0,y->y0 //拿到所有矩形 layer.find('Rect').each(function(item,index){ item.y(y0);//在Konva中如果传参,代表设置值,如果不传参数,代表取值 item.height(0); //动画显示到初始状态 item.to({ duration:1, y:y0-data[index].value*height, height:data[index].value*height, }); }); //把文字设置一下动画 layer.find('.textPercent').each(function(item,index){ item.y(y0-14); item.to({ duration:1, y:y0-data[index].value*height-14, }); }); }); </script></body></html>
0 0
- 柱状图案例
- HighCharts操作案例-柱状图
- HighCharts操作案例-3D可拖拽柱状图
- 柱状图
- 柱状图
- 柱状图
- 柱状图
- 柱状图
- 柱状图
- 柱状图
- 柱状图
- 柱状图
- 柱状图
- 4.案例:查询各个级别分销商的数量(饼图和柱状图)-Servlet(柱状图)
- Silverlight三维柱状图3D饼图的Silverlight图表组件案例
- 1.案例:查询各个级别分销商的数量(饼图和柱状图)-Dao
- 2.案例:查询各个级别分销商的数量(饼图和柱状图)-Manger
- 3.案例:查询各个级别分销商的数量(饼图和柱状图)-Servlet(饼图)
- CommonJS AMD CMD UMD RequireJS的区别
- 深入理解C++的动态绑定和静态绑定
- AndroidTV开发(十一)Android Tv Launcher自定义RecyclerView
- C语言数据结构----递归的应用(斐波拉契数列、汉诺塔、strlen的递归算法)
- 图片验证码识别平台安装说明书
- 柱状图案例
- 【JZOJ4916】完全背包问题 题解
- 【设计模式 - 3】之建造者模式(Builder)
- iOS 10 UIActionSheet UIAlertController
- Hadoop集群之HDFS伪分布式安装 HA(二)
- 神炎皇
- 任意进制转换(c++)
- 标准论文参考文献添加方法——Zotero入门使用教程
- 为什么要用translate3d(为了视觉需要,但是会影响css性能)