利用d3js绘出环形百分比环

 (function() {
var numberData = [{
value : 0.334,
text : "33.4%",
color : "#fd12000",
id : 1
}, {
value : 0.666,
text : "66.6%",
color : "#3611aa",
id : 2
}]; drawCir("#container", numberData, 170, 170); function drawCir(selector, data, height ,width) {
var radius = Math.min(width, height) / 2, spacing = 45; fields = data; var arc = d3.svg.arc().startAngle(0.5 * Math.PI).endAngle(function(d) {
var direction = (d.id % 2 == 0) ? -1 : 1;
return 0.5 * Math.PI + direction * d.value * 2 * Math.PI;
}).innerRadius(function(d) {
return radius - spacing;
}).outerRadius(function(d) {
return radius;
}); var svg = d3.select(selector).append("svg").attr("width", width).attr("height", height).append("g").attr("transform", "translate(" + width / 2 + "," + height / 2 + ")"); var field = svg.selectAll("g").data(fields).enter().append("g"); field.append("path");
field.append("text"); field = field.each(function(d) {
this._value = d.value;
}).data(fields).each(function(d) {
d.previousValue = this._value;
}); field.select("path").transition().attrTween("d", arcTween).duration(1000).style("fill", function(d) {
return d.color;
}); field.select("text").text(function(d) {
return d.text;
}).style("stroke", "white").attr("transform", function(d) {
var direction = (d.id % 2 == 0) ? -1 : 1;
return "rotate(" + direction * 360 * d.value / 2 + ")" + "translate(" + (radius - spacing / 2) + ",0)" + "rotate(" + (d.value < .5 ? -0 : 180) + ")"
}); function arcTween(d) {
var i = d3.interpolateNumber(0, d.value);
return function(t) {
d.value = i(t);
return arc(d);
};
} } })();

最终效果:

d3js资源:

 <script src="http://d3js.org/d3.v3.js"></script>

利用d3js绘出环形百分比环的更多相关文章

  1. canvas动画之动态绘出六边形

    先上 demo: http://en.jsrun.net/W5iKp/show 这两天我一直在研究这个动画,花了大量的时间来想是如何实现的, 一开始我是想在进入 canvas 时按时间来用 lineT ...

  2. OpenCV—Python 轮廓检测 绘出矩形框(findContours\ boundingRect\rectangle

    千万注意opencv的轮廓检测和边缘检测是两码事 本文链接:https://blog.csdn.net/wsp_1138886114/article/details/82945328 1 获取轮廓 O ...

  3. 利用python画出动态高优先权优先调度

    之前写过一个文章. 利用python画出SJF调度图 动态高度优先权优先调度 动态优先权调度算法,以就绪队列中各个进程的优先权作为进程调度的依据.各个进程的优先权在创建进程时所赋予,随着进程的推进或其 ...

  4. 乒乓球队比赛,甲队有abc三人,乙队有xyz三人。 抽签得出比赛名单:a不和x比,c不和x,z比, 利用集合求出比赛名单

    import java.util.HashMap; import java.util.Map; /** * 乒乓球队比赛,甲队有abc三人,乙队有xyz三人. * 抽签得出比赛名单:a不和x比,c不和 ...

  5. 利用LineRenderer画出一个圆,类似于lol中的攻击范围

    http://www.unity蛮牛.com/blog-5945-1409.html 本人大四狗,学unity半年有余,写此文章纯粹记录自己的心得. 废话不多说,进入主题.... 效果如图: 首先要理 ...

  6. 再谈Cognos利用FM模型来做同比环比

    很早之前已经讲过 <Cognos利用DMR模型开发同比环比>这篇文章里说的是不利用过滤器,而是采用 except (lastPeriods (-9000,[订单数据分析].[日期维度].[ ...

  7. 利用FluidMoveBehavior制作出手机通讯录平滑的效果

    最近学习Blend,原来Blend制作动画等效果非常棒.下面演示一下FluidMoveBehavior应用,利用Blend中行为中的FluidMoveBehavior制作出手机通讯录平滑的效果 1.在 ...

  8. MergeSort归并排序和利用归并排序计算出数组中的逆序对

    首先先上LeetCode今天的每日一题(面试题51. 数组中的逆序对): 在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对.输入一个数组,求出这个数组中的逆序对的总数. ...

  9. 利用python画出SJF调度图

    最先发布在csdn.本人原创. https://blog.csdn.net/weixin_43906799/article/details/105510046 SJF算法: 最短作业优先(SJF)调度 ...

随机推荐

  1. 【PHP开发】ThinkPHP3.1.3问题集及解决方法

    Outline: 无法获取post请求中的url参数的问题 中文存入数据表后为空字符串 1. 无法获取post请求中的url参数的问题 ThinkPHP3.1.3中,如果提交的post请求中,如果要在 ...

  2. iOS中数组遍历的方法及比較

    数组遍历是编码中非经常见的一种需求.我们来扒一拔iOS里面都有什么样的方法来实现,有什么特点. 由于iOS是兼容C语言的.所以C语言里面的最最常见的for循环遍历是没有问题的. 本文中用的数组是获取的 ...

  3. JS常用方法手记

    1.判断arr数组是否含有元素str,没有返回-1 arr.indexOf(str) 2.遍历arr数组,k为键,v为值 arr.map((v, k) => { return;}) 3.arr数 ...

  4. 37、pendingIntent 点击通知栏进入页面

    转载: http://blog.csdn.net/yuzhiboyi/article/details/8484771 https://my.oschina.net/youranhongcha/blog ...

  5. EasyDSS RTMP流媒体服务器web前端:vue组件之间的传值,父组件向子组件传值

    之前接触最多的都是EasyNVR,主要针对的都是前端的一些问题.也有接触到一些easydss流媒体服务器. 前端方面的,EasyDSS流媒体服务器与EasyNVR有着根本的不同.EasyNVR使用的是 ...

  6. The template root requires exactly one element

    The template root requires exactly one element

  7. AndroidUI组件之ImageSwitcher

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/gc_gongchao/article/details/25594669 今天继续AndroidUI组 ...

  8. 20145239杜文超 《Java程序设计》第10周学习总结

    20145239 <Java程序设计>第10周学习总结 教材学习内容总结 Java的网络编程 网络编程 网络编程就是在两个或两个以上的设备(例如计算机)之间传输数据. 网络概述 1.计算机 ...

  9. HDU 2037 今年暑假不AC ( 起始与终止时间 【贪心】)

    今年暑假不AC Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Sub ...

  10. WCF异常处理

    [读书笔记] 在进行分布式应用的异常处理时需要解决和考虑的基本要素: 异常的封装:服务端抛出的异常如何序列化传递到客户端 敏感信息的屏蔽:抛出的异常往往包含一些敏感的信息,直接将服务操作执行过程抛出的 ...