d3.js——饼状图的拖拽
2016-05-10 14:52
423 查看
常规定义:
var width = 500, height = 500; var dataset = [30,10,43,55,13] var color = d3.scale.category10() var svg = d3.select("body").append("svg") .attr("width",width) .attr("height",height) var pie =d3.layout.pie()拖拽函数的定义:
var drag = d3.behavior.drag() .on("drag",dragmove)
function dragmove(d){ d.dx += d3.event.dx; d.dy += d3.event.dy; d3.select(this) .attr("transform","translate("+ d.dx+","+ d.dy+")") }//<span style="font-family: Arial, Helvetica, sans-serif;">偏移量=当前偏移量+拖拽偏移量</span>绘制饼状图:
var outerRadius = width/4, innerRadius = width/8; var arc = d3.svg.arc() .innerRadius(innerRadius) .outerRadius(outerRadius)
注意:这里我们需要将饼状图的每一个区域都用g标签包围起来,这样在做平移操作时只需要对各部分的g使用transform即可
var gAll = svg.append("g") .attr("transform","translate("+outerRadius+","+outerRadius+")") var arcs = gAll.selectAll("g") .data(pie(dataset)) .enter() .append("g") .each(function (d) { //指定当前区域的偏移量,用于保存偏移量 d.dx = 0; d.dy = 0; }) .call(drag) //调用drag函数 arcs.append("path") .attr("fill",function(d,i){return color(i)}) .attr("d", function (d) { return arc(d) }) //添加文字 arcs.append("text") .attr("transform",function(d){ return "translate(" + arc.centroid(d) + ")"; }) .attr("text-anchor","middle") .text(function(d){ return d.value; });
相关文章推荐
- 【JS 设计模式 】门面模式之DOM元素绑定事件
- Js中的window.parent ,window.top,window.self 详解
- js实现语音播报功能
- js判断对象{}是否为空
- js中的正则表达式
- javascript阻止scroll事件多次执行的思路及实现
- javascript逻辑运算符“||”和“&&”
- JS学习笔记(二)变量、作用域及内存问题
- js 根本没有“JSON对象”这回事! JSON对象——转
- [JavaScript]继承的真真假假
- jsp九大内置对象
- jstl
- html table动态合并单元格 js方法
- JS事件
- 一道非常有趣的JS题
- 原生js文字标签云上下滚动播放
- javascript第一天数据类型及声明方式
- 子页面控制父页面跳转
- javascript实现的猜数小游戏完整实例代码
- js实现的简单图片浮动效果完整实例