D3(Data-Driven Documents) 是一款基于SVG的非常基础、强大和应用广泛的库,提供了对于DOM结点操作的高效封装,适用于数据可视化的实现。
D3的核心库主要做了以下封装:
- DOM选择器
- DOM操作函数
- 动画变换
其实很像是jQuery,但与jQuery又有些根本的不同:
- D3 是数据驱动的,在D3中是通过操作改变数据从而改变DOM
- D3 通常用于做数据可视化,并且有很多相关的可视化插件
由于都包含DOM操作库,所以一些API很像也不奇怪。
http://stackoverflow.com/questions/13187112/what-is-the-difference-between-d3-and-jquery
截止目前,最新版本是 D3 v4.8
D3优点
- BSD开源,有庞大的社区支持和维护
- 数据驱动,以数据为核心,方便做数据到表现的映射
- 后缀语法、选择器、动态属性、数据绑定、动画;
- 大量示例,还有各种开源封装;
- 相对底层,可以方便实现各种定制需求
- 交互性实现相对于Canvas等简单;
D3缺点
- 由于主要基于SVG, 设计使用不当可能会造成DOM节点过多,产生性能问题
- 学习曲线较陡峭
- 相对于echarts, highcharts,实现图表较麻烦,工作量较大
所以,如果需求变化不大,echarts等demo图表就能够满足需求的话,建议直接echarts等这种现成图表库;如果需要定制化,则D3非常适合。
预备知识
- HTML, CSS, JavaScript
- DOM 概念和一般操作
- SVG 标签及一些常用属性
作为前端开发者来说,D3只是又一个库而已。
但如果要做出优秀的数据可视化图表,还需要对各种图表特点和适用性,动画美学,源数据特点,以及物理公式等有一些了解。
学习工具
推荐用jsbin,jsfiddler等在线编辑器,可以方便预览。
小试身手
[codepen_embed height="265" theme_id="0" slug_hash="ZKReQP" default_tab="js,result" user="ijse"]See the Pen <a href='https://codepen.io/ijse/pen/ZKReQP/'>D3</a> by Li Yi (<a href='http://codepen.io/ijse'>@ijse</a>) on <a href='http://codepen.io'>CodePen</a>.[/codepen_embed]
参考:
- https://github.com/d3/d3/wiki/Tutorials