一、简介D3.js是什么
- 一款基于JavaScript的函数库
- 借助HTML、SVG和CSS等实现可视化
- 组件强大,通过数据驱动的方式来操作DOM
D3.js堪称SVG中的jQuery
二、vue引入D3.js
1. 安装d3
npm install d3 --save-dev或者cnpm install d3 --save-dev
2. 引入d3
<template><div></div></template><script>import * as d3 from 'd3'; //引入d3export default {data() {return {}},}</script>
三、绘制线条
drawPath(pathArr) {var body = d3.select('body'); //选择文档中的body元素var svg = body.select('svg'); //选择body中的svg元素var Gen = d3.line(); //线条var pathOfLine; //path的坐标// 循环出pathArr每根线条的坐标pathArr.forEach(item => {// 将坐标点转化为path所需要的格式pathOfLine = Gen(item);svg.append('path') //增加<path>.attr('d', pathOfLine) //d属性为path所需坐标点(具体字母对应如下所示).attr('stroke', '#0F4E8A') //线条颜色.attr('stroke-width', '2') //线条粗细.attr('fill', 'transparent') //填充颜色.attr('class', 'path'); //类型为'path'});},
pathArr的样例数据格式
this.pathArr = [[[0, 100],[500, 100],[500, 200],],[[0, 200],[500, 100],[500, 200],],];
pathOfLine的样例数据格式
M1,3 L5,10 L10,0
四、SVG中d属性详解
标准的指令字母
| M | moveto 移动到 | (x y)+ |
|---|---|---|
| Z | closepath 关闭路径 | (none) |
| L | lineto 画线到 | (x y)+ |
| H | horizontal lineto 水平线到 | x+ |
| V | vertical lineto 垂直线到 | y+ |
| C | curveto 三次贝塞尔曲线到 | (x1 y1 x2 y2 x y)+ |
| S | smooth curveto 光滑三次贝塞尔曲线到 | (x2 y2 x y)+ |
| Q | quadratic Bézier curveto 二次贝塞尔曲线到 | (x1 y1 x y)+ |
| T | smooth quadratic Bézier curveto 光滑二次贝塞尔曲线到 | (x y)+ |
| A | elliptical arc 椭圆弧 | (rx ry x-axis-rotation large-arc-flag sweep-flag x y)+ |
| R | Catmull-Rom curveto * Catmull-Rom曲线 |
x1 y1 (x y)+ |
基础指令
| M | 移动到(moveTo) | x,y | 路径起始点坐标 |
|---|---|---|---|
| Z | 闭合路径(closepath) | 将路径的开始和结束点用直线连接 | |
| L | 直线(lineTo) | x,y | 当前节点到指定(x,y)节点,直线连接 |
| H | 水平直线 | x | 保持当前点的y坐标不变,x轴移动到x, 形成水平线 |
| V | 垂直直线 | y | 保持当前点的x坐标不变,y轴移动到y, 形成垂直线 |
