D3.js 对角线生成器 (V3版本)

2019-05-16 23:56:23来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

对角线生成器(Diagonal Generator)
 
对角线生成器(Diagonal Generator)用于将两个点连接起来,连接线是三次贝塞尔曲线,该生成器使用d3.svg.diagonal()创建。有两个访问器,source()target(),还有一个投影函数projection(),用于将坐标进行投影。现有数据:
 
 1      var width = 600;
 2         var height = 400;
 3 
 4         var svg = d3.select("#body")
 5                     .append("svg")
 6                     .attr("width",width)
 7                     .attr("height",height)
 8 
 9         var dataList = {
10             source: { x: 100, y: 100 },
11             target: { x: 300, y: 200 }
12         }

 

source是起点,target是终点,其中包含的是x坐标和y坐标。接下来将这两个点用三次贝塞尔曲线连接起来。先定义一个对角线生成器,访问器都使用默认的。然后添加<path>元素,再使用生成器得到所需要的对角线路径。代码:
 
 1    //创建一个对角线生成器
 2         var diagonal = d3.svg.diagonal()
 3 
 4     
 5         //添加路径
 6         svg.append("path")
 7             .attr("d",diagonal(dataList))
 8             .attr("fill","none")
 9             .attr("stroke","black")
10             .attr("stroke-width","3px")

 

结果图如下:, 左上角的是source起点,右下角的是target终点,中间的曲线有两个弯。
 
 
使用projection()可以定制具有投影的生成器。投影用于将坐标进行变换,定义了之后,起点和终点坐标都会首先调用该投影进行坐标转换,然后再生成路径。举个例子:
 
1   //使用投影函数
2         var diagonal = d3.svg.diagonal()
3                         .projection(function(d){
4                             var x = d.x * 1.5
5                             var y = d.y * 1.5
6                             return [x,y]
7                         })

 

这样,对于每个起点和终点坐标,x坐标和y坐标都会放大1.5倍,起点坐标变为(150,150),终点坐标变为(450,300)。但是,原数据并不会改变,只是在绘制的时候使用投影后的坐标。
 
 
 

原文链接:https://www.cnblogs.com/littleSpill/p/10878293.html
如有疑问请与原作者联系

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:Vue介绍以及模板语法-插值

下一篇:JQ中的Ajax的封装