博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
d3 v4实现饼状图,折线标注
阅读量:5795 次
发布时间:2019-06-18

本文共 2490 字,大约阅读时间需要 8 分钟。

第一次写博客,写的不好勿怪!!! 此博客是通过d3 v4 实现一个饼状图,并添加了折线标注;代码如下 let self = this; var tooltip = d3.select("body").append("div").attr("class", "toolTip"); let ele = document.getElementById(this.svg); var svg = d3.select("#"+this.svg),   width = +ele.clientWidth,   height = +ele.clientHeight,   radius = Math.min(width-80, height-80) / 2,   g = svg.append("g").attr("transform", "translate(" + width / 2 + "," + (height/2) + ")"); /*console.log("width:"+ele.clientWidth); console.log("heigth:"+ele.clientHeight);*/ var color = d3.scaleOrdinal(["#74F590", "#F56464", "#64BCF5"]); var pie = d3.pie()   .sort(null)   .value(function(d) { return d.value; }); var path = d3.arc()   .outerRadius(radius)   .innerRadius(35); var path0 = d3.arc()   .outerRadius(radius+10)   .innerRadius(35); var label = d3.arc()   .outerRadius(radius - 20)   .innerRadius(radius - 20); var label0 = d3.arc()   .outerRadius(radius + 20)   .innerRadius(radius + 20); let data = [   {"area": "正在运行 ", "value": 2704659},   {"area": "异常终止 ", "value": 4499890},   {"area": "已完成", "value": 2159981} ];   var arc = g.selectAll(".arc")     .data(pie(data))     .enter().append("g")     .attr("class", "arc"); arc.on("mouseover",function(d,i){
d3.select(this).select("path") .attr("d",path0); tooltip .style("left", d3.event.pageX - 50 + "px") .style("top", d3.event.pageY - 70 + "px") .style("display", "inline-block") .html( "
"+(d.data.area) +"
"+ "
"+"执行个数:"+(d.value)+"个
" ); }); arc.on("mouseout",function(d,i){
d3.select(this).select("path") .attr("d",path); tooltip.style("display", "none"); }); arc.append("path") .attr("d", path) .attr("fill", function(d) { return color(d.data.area); }); arc.append("text") .attr("transform", function(d) {
var x2 =label0.centroid(d)[0]; var y2 =label0.centroid(d)[1]; var x3 = x2<0?x2-70:x2+30; return "translate(" + x3 + "," + y2 + ")"; }) .attr("dy", "0.35em") .text(function(d) { return d.data.area; }); arc.append("polyline") .attr("points",function(d){
var x1 =label.centroid(d)[0]; var y1 =label.centroid(d)[1]; var x2 =label0.centroid(d)[0]; var y2 =label0.centroid(d)[1]; var x3 = x2<0?x2-30:x2+30; return x3+","+y2+" "+x2+","+y2+" "+x1+","+y1; }) .style("fill","none") .style("stroke","rgb(99,99,99)") .style("stroke-width","1")

 

转载于:https://www.cnblogs.com/zxdh/p/7340191.html

你可能感兴趣的文章
SQL Server 复制 - 发布订阅(SQL Server 数据同步)
查看>>
C++程序的设计机制3 RAII机制(2)
查看>>
ThinkPHP5基础学习(慕课版)
查看>>
iOS开发之--隐藏状态栏
查看>>
15款优秀移动APP产品原型设计工具
查看>>
SharePoint PowerShell命令系列 (12) New-SPWebApplication
查看>>
python的select服务端的代码和客户端的代码
查看>>
学习总结计划
查看>>
DFS HDU 5305 Friends
查看>>
C# 使用 Socket 实现 http 协议全功能版
查看>>
构建NetCore应用框架之实战篇(五):BitAdminCore框架1.0登录功能设计实现及源码...
查看>>
GC算法 垃圾收集器
查看>>
linux 配置tomcat服务器
查看>>
点点滴滴的生活
查看>>
马云不想成为“马云”
查看>>
MRP工作台任务下达之计划组为必输
查看>>
完工原因栏必输
查看>>
android进程与线程详解
查看>>
为C#自定义控件添加自定义事件
查看>>
WIN8.1的安装和打开"这台电脑"速度很慢的解决办法
查看>>