D3.js vs Raphael.js

我对d3和Raphael都很着迷。 我知道Raphael是build立在D3之上的,它是跨浏览器兼容的,但我不确定哪一个更适合于什么场景。 有人可以请一些光? 我的直接用例可能使用SIMILE时间轴并将其与状态图(我打算使用d3 / Raphael)进行整合。 谢谢!

拉斐尔不是build立在D3上。

拉斐尔将帮助你吸取元素。 D3更全面,将帮助您将数据绑定到元素。 所以我会说D3更强大。 这个论坛讨论讨论使用D3来展示一个SIMILE时间轴,他们指的是在D3中实现时间轴的这个项目 。 所以乍一看,D3是你的答案。

但是,鉴于D3似乎没有处理SIMILE时间线的D3,Raphael或D3可能是一个不错的select。 也就是说,除了D3在Internet Explorer的早期版本上不能正常工作,就像本文所解释的那样。 所以如果你需要支持IE的早期版本,你最好和Raphael在一起。

D3比Raphael更难学,但是在这两种情况下,你还必须学习SVG才能创造出更好的animation。 另一方面,由于已经有很多预先打包的布局,所以通常D3可视化需要的math比类似的Processing或Raphael的例子less。

我认为D3是更好的select,因为一个明显的原因:D3是基于当前的Web标准栈(HTML,DOM – 即使你讨厌它,你需要使用它,CSS,SVG,甚至canvas),是一个库用于处理数据。 作为一个数据框架,D3还包括:

  • 吨的algorithm和布局(强制布局,堆栈布局,树木等),
  • 一些基本的数据争夺function(嵌套,交叉,分组,汇总 – 见这些例子: http : //bl.ocks.org/phoebebright/raw/3176159/ )
  • jQuery风格select,
  • 还有可视化原语(d3.svg带有简单graphics所需的所有东西)。

就目前而言,d3在许多情况下不仅仅比Raphael和Processing更好,而且也是jQuery,underscore.js和其他框架的可行替代品。 在它上面build立了许多图表库,所以你总是可以拖放一些很酷的图表,并重新编写它的数据包装器。

你可以使用这个接口find一些很好的时间线例子: http : //biovisualize.github.com/d3visualization/#visualizationType=timeline

两者都是不同的动物。

RaphaelJS简化和扩展了基于SVG和VML的vectorgraphics的function。

D3js只是操纵DOM,并依靠graphics标准(SVG和canvas,棒图上,你也可以使用DIV)来绘制。 例如, d3.svg.symbol()返回d参数的内容,将其传递给SVG上的path元素,但不要自行绘制符号。

你可以使用D3js来操作数据并用Raphael绘制。

这个博客解释如何结合D3js + 拉斐尔 。 并检查D3为Raphael实施。

作为公共部门的顾问,我发现学习Raphael对我来说是一个更好的投资,因为很多时候我的客户使用老版本的浏览器。 我目前的客户完全使用IE7,Raphael完美的工作和D3不。

就个人而言,我宁愿使用D3,但专业,这不是我的情况的现实。