D3.js vs Raphael.js

Nic*_*ick 52 raphael d3.js

我对d3和拉斐尔都非常着迷.我知道Raphael是建立在D3之上的,并且它是跨浏览器兼容的,但我不确定哪一个更适合什么情况.有人可以解释一下吗?我的直接用例可能是使用SIMILE时间轴并将其与状态图集合(我打算使用d3/Raphael).谢谢!

CL2*_*L22 45

拉斐尔不是建立在D3上的.

拉斐尔将帮助你画出元素.D3更全面,可以帮助您将数据绑定到元素.所以我说D3更强大.此论坛讨论讨论使用D3呈现SIMILE时间轴,他们参考这个在D3中实现时间轴的项目.所以乍一看,D3就是你的答案.

但是,鉴于D3似乎没有为您处理SIMILE时间轴的小部件,Raphael或D3都是不错的选择.也就是说,除了D3与Internet Explorer的早期版本不兼容之外,正如本文所述.因此,如果您需要支持IE的早期版本,那么您最好使用Raphael.


pax*_*man 26

D3比Raphael更难学,但在这两种情况下,你还必须学习SVG才能创造更好的动画.另一方面,通常D3可视化比类似的Processing或Raphael示例需要更少的数学,因为已经有许多预先打包的布局.

我会说D3是更好的选择,原因很明显:D3基于当前的Web标准堆栈(HTML,DOM - 即使你讨厌它需要使用它,CSS,SVG,甚至是Canvas),并且是一个库用于处理数据.作为一个数据框架,D3还包含:

  • 大量的算法和布局(强制布局,堆栈布局,树木等),
  • 一些基本的数据争用功能(嵌套,交叉,分组,汇总 - 请参阅以下示例:http://bl.ocks.org/phoebebright/raw/3176159/),
  • jQuery样式选择,
  • 还有可视化原语(d3.svg带有简单图形所需的一切).

在许多情况下,d3不仅比Raphael和Processing更好,而且也是jQuery,underscore.js和其他框架的可行替代品.在它之上构建了许多图表库,因此您可以随时拖放一些很酷的图表并重写它周围的数据包装器.

您可以使用此界面找到一些好的时间线示例:http://biovisualize.github.com/d3visualization/#visualizationType=timeline

  • 为了清楚起见,d3不能替代jquery,因为d3对浏览器兼容性没有任何要求,而jquery拥有兼容性层角色. (2认同)

jku*_*ski 17

两者都是不同的动物.

RaphaelJS简化和扩展了基于SVG和VML的矢量图形功能.

D3js只是操纵DOM并依赖于图形标准(SVG和Canvas,在条形图上也可以使用DIV)来绘制.例如,d3.svg.symbol()返回d参数的内容以将其传递给pathSVG上的元素,但不要自己绘制符号.

您可以使用D3js操纵数据并使用Raphael绘制它.

这篇博客解释了如何结合D3js + Raphael.并检查D3的Raphael实现.


Jar*_*red 10

作为一名公共部门顾问,我发现学习拉斐尔对我来说是一个更好的投资,因为很多时候我的客户使用旧版本的浏览器.我现在的客户使用的是IE7,其中拉斐尔完美地工作,而D3则不然.

就个人而言,我宁愿使用D3,但从专业角度来说,这不是我现实的情况.

  • 是不是仍然不能使用D3? (2认同)