📅  最后修改于: 2023-12-03 15:30:21.230000             🧑  作者: Mango
D3.js 是一个基于数据的 JavaScript 库,用于帮助开发人员创建复杂的交互式数据可视化。它提供了一系列的操作数据的 API 以及强大的图形绘制能力。本文将给您介绍 D3.js 的常用 API 并提供完整的参考文档。
D3.js 可以通过 npm 安装:
npm install d3
也可以直接使用 CDN 引入:
<script src="https://d3js.org/d3.v7.min.js"></script>
D3.js 提供了许多选择器(selector),可以帮助您定位 HTML 或 SVG 元素,例如:
d3.select(selector)
:选取第一个匹配元素d3.selectAll(selector)
:选取所有匹配元素// 选取 id 为 "my-svg" 的 SVG 元素
const svg = d3.select("#my-svg");
详细文档请参考选择器。
在 D3.js 中,我们可以将数据与元素绑定,然后根据数据的变化动态更新元素的属性或内容。数据可以是数组、对象等形式。
selection.data(data[, key])
:将 data 数组与当前选中的元素绑定,并返回一个包含了“连接”、“退出”、“更新”状态的新的 selection。key 参数可选。const data = [1, 2, 3, 4, 5];
const circle = svg.selectAll("circle")
.data(data)
.join("circle")
.attr("cx", (d) => d * 50)
.attr("cy", 50)
.attr("r", 20)
.attr("fill", "steelblue");
详细文档请参考数据绑定。
通过使用 D3.js 的缓动和过渡功能,我们可以为绑定数据的元素添加一些动画效果,例如移动、旋转、缩放等。
selection.transition([name])
:创建一次过渡(transition),并返回包含了“进入”、“过渡”状态的新的 selection。name 参数可选。transition.duration([duration])
:设置过渡时间,单位为毫秒。transition.delay([delay])
:设置过渡延迟时间,单位为毫秒。transition.ease([ease])
:设置过渡缓动函数(easing function)。// 移动圆形
circle.transition()
.duration(1000) // 过渡时间为 1 秒
.attr("cx", (d) => d * 50 + 50);
// 修改颜色
circle.transition()
.duration(1000)
.delay(1000) // 延迟 1 秒后开始过渡
.attr("fill", "orange")
.transition()
.duration(1000)
.delay(1000)
.attr("fill", "steelblue")
.transition()
.duration(1000)
.delay(1000)
.attr("fill", "orange")
.transition()
.duration(1000)
.delay(1000)
.attr("fill", "steelblue");
详细文档请参考过渡和缓动。
D3.js 支持众多的图形类型,包括常见的条形图、折线图、散点图、饼图等:
d3.scaleBand
, d3.scaleLinear
, selection.append("rect")
d3.scaleTime
, d3.line
, selection.append("path")
d3.scaleLinear
, selection.append("circle")
d3.pie
, selection.append("path").attr("d", arc)
详细的图形绘制方式请参考D3.js 官方示例库。
D3.js 拥有非常丰富的 API 文档,在此引用官方地址,建议开发者将其下载到本地以方便查看:
本文对 D3.js 常用的 API 进行了简单介绍,希望对新手开发者有所帮助。D3.js 库虽然功能强大,但要学好还需要大量的实践和研究。祝各位开发者学习愉快!