By *_*ell 84 javascript protovis d3.js
TLDR:有没有人有protovis和D3.js的经验来阐明两者之间的差异?
过去两周我一直在玩protovis,到目前为止一直很棒.除了现在我似乎已经用动画打了一个砖墙.
protovis:http://vis.stanford.edu/protovis/
我想做一些非常简单的动画但是使用protovis感觉不那么直观 - 我开始认为protovis从来就不是真的意味着动画.所以,我开始关注D3.js:
http://mbostock.github.com/d3/ex/stack.html
它看起来非常相似,但是:
任何人都可以阐明任何其他差异吗?
我非常感谢任何和所有的投入
nra*_*itz 115
我已经用Protovis做了大量的工作,还有一些关于D3的东西.除了你提到的要点之外,我认为以下差异对我来说很突出:
Protovis在您指定的视觉属性之间提供简化的抽象层,D3使用实际的CSS和DOM规范 - 所以代替.width(10)或者.fillStyle('#00C')您使用.style('width', 10)或.attr('fill', '#00C').在这些示例中,差异非常小,但是当您在SVG图像中绘制线条时,会有很大差异.结果是使用D3可以感觉到更低级别 - 你有更多的控制权,但你必须非常熟悉SVG语法才能更容易地做一些Protovis做的事情.
如您所知,Protovis全部以SVG呈现,而D3可以使用DOM的其他部分.这意味着,对于不需要基于SVG的可视元素的可视化,即使使用不支持SVG的浏览器,也可以使用D3.这也意味着在同一个可视化中集成HTML和SVG要容易得多,这对于处理文本(文本操作和布局在Protovis中相当弱)这样的事情非常好.
D3更改或删除了一些基本的Protovis实用程序,如缩放和数据操作.我一再恼火,基本的实用程序喜欢pv.sum()或pv.mean()没有D3等价物,虽然有些像.nest()两个库共享.编辑12年10月1日: D3填补了其数据的实用程序,但仍有少数Protovis包括与D3没有,例如pv.dict,pv.numerate和pv.repeat.据推测,他们被排除在外,因为他们被认为不太有用.
D3为异步请求提供实用程序.当我想在Protovis中使用它时,我通常必须使用外部库(即jQuery).
与Protovis相当详细的文档相比,D3 API文档几乎完全缺乏完整性.编辑(2013年8月30日):D3现在有关于GitHub的完整和详细的API文档,所以这一点已不再适用.
最后,我对动画没有做太多,但我认为你完全正确 - D3提供了比Protovis更多的动画支持,特别是在动画过渡方面.Protovis可以根据需要重新渲染部分或全部可视化,但是没有任何支持来逐步完成有限持续时间的动画 - 您必须手动编写所有代码setInterval.D3似乎使这成为图书馆不可或缺的一部分.
编辑(7/12/11):看起来有一个新的主要区别 - 截至2011年6月28日,Protovis不再处于积极发展阶段,而Protovis团队正在推动D3.js.最后一个版本非常稳定,所以这不应该阻止你使用它,但它绝对是一个值得考虑的问题.
mbo*_*ock 32
有一个教程详细介绍了D3和Protovis之间的差异.我同意@ nrabinowitz的描述,但我会指出我们最近添加了大量的API文档.
来自Protovis/d3.js的作者最近发表的一篇论文http://vis.stanford.edu/files/2011-D3-InfoVis.pdf主要关于d3.js,但其中包含了他们改变某些原因的一些原因.从Protovis到d3.js的路上的东西
| 归档时间: |
|
| 查看次数: |
22276 次 |
| 最近记录: |