这不是一篇介绍D3的使用教程,而是只想说说我为什么选择使用D3,借以思考在面对新的技术的时候我该如何选择。
这段时间我在录制一门课程网页上的图表。录制课程前我调查了一下,应该用哪些工具/库来制作图表。可以确定的是,我要用svg来生成图表,而不是用html5中的canvas。开始采用的是Raphaël,一个用来创建和操作网页上矢量图形的javascript库。最开始偏向于使用Raphaël是因为之前看到的一个很漂亮的页面。在费了几天的时间,经过了很多挫折和参考资料没找到太多的情况下,做出了一个凑合的简单的图表。然后我退缩了,直到我发现了D3。
D3的缩写是Data Driven Documents,与Raphaël的关系:
相同点
- 都是用javascript写的针对矢量图的库
- 都可以对DOM节点进行操作,包括绘制,修改,添加动画效果以及图形的交互
不同点
- Raphaël是一个矢量图的API,专注于对矢量图形的操作
- D3是一个数据的API,专注于数据。将数据与网页中的svg元素绑定起来,然后进行一定的操作。比如将一个有5个元素的数组与柱状图表中的5个y坐标值(高度)绑定,然后当数组的数据变化时,柱状图表的高度也会相应的更新
选择D3可以从技术层面上来考虑:
- SVG比较于Canvas,可以对于DOM直接操作
- 对比于Raphaël,D3直接对svg元素进行操作性能更好
- D3不兼容老版本的浏览器,而Raphaël兼容
另外我觉得让我选择D3的最重要的原因就是:她能给我带来一种创作的热情。
热情之一:庞大的用户基数
在github上目前的关注(star)人数已经超过了2万人,非常受欢迎的项目。github的图表也是使用D3来生成的。越来越多的网站开始使用D3,越来越多的数据可视化自由职业者开始涌现,越来越多的培训班专门培训D3.
热情之二:友好开放的社区
D3本身就是一个开源的库,这种开源的精神也形成了一种乐于分享的社区(这里和这里)。使用D3的人有开发者,有设计师,还有艺术家,一个活跃而不停有思想火花碰撞的社区。D3的作者本人Mike Bostock也是一个很活跃的人,经常会写一些教程和非常好的实例。
热情之三:大量的资料
虽然D3比Raphaël的学习难度要大一些,但是D3拥有数以千计的实例,大量的教程,我很快的就作出了我想要的东西。
热情之四:美
当我使用D3时,我觉得我不但是一个coder,我还是一个艺术家,我是在创造一种美,给自己带来更大的热情。
你还在等什么,现在就开始你的D3之旅吧。
D3 做的动画效果都很不错!
数据分离!
d3.js是前端数据可视化必须学习的一个框架,推荐一个小课程:
http://xc.hubwiz.com/course/54fd40cfe564e50d50dcf284?affid=ourjs