- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
TLDR:有没有人同时使用过 protovis 和 D3.js 来说明两者之间的区别?
过去 2 周我一直在使用 protovis,到目前为止效果非常好。除了现在我似乎在动画方面遇到了一些障碍。
原型(prototype):http://vis.stanford.edu/protovis/
我想做一些非常简单的动画,但使用 protovis 感觉不够直观——我开始认为 protovis 从来就不是真正的动画。所以,我开始研究 D3.js:
http://mbostock.github.com/d3/ex/stack.html
看起来很像,但是:
谁能阐明任何其他差异?
我将非常感谢任何和所有的输入
最佳答案
我用 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 ()
,在两个库之间共享。 编辑 2012 年 10 月 1 日:D3 已经填写了它的数据实用程序,但仍然有一些是 Protovis 包含而 D3 没有的,例如pv.dict
、pv.numerate
和 pv.repeat
。据推测,它们被排除在外是因为人们普遍认为它们用处不大。
D3 为异步请求提供实用程序。当我想在 Protovis 中使用它时,我通常必须使用外部库(即 jQuery)。
与相当详细的 Protovis 文档相比,D3 API 文档
几乎完全缺乏
不完整。 编辑 (8/30/13):D3 现在有 complete and detailed API documentation on GitHub ,所以这一点不再相关。
最后,我在动画方面做的不多,但我认为您完全正确 - D3 比 Protovis 提供更多的动画支持,尤其是在动画过渡方面。 Protovis 可以根据需要重新呈现部分或全部可视化效果,但不支持逐步执行有限持续时间的动画 - 您必须使用 setInterval
手动编写所有代码。 D3 似乎使它成为库中更不可或缺的一部分。
编辑 (7/12/11):看起来有一个新的主要区别 - 截至 2011 年 6 月 28 日,Protovis 不再处于积极开发状态,Protovis 团队正在插入 D3 .js 代替。最新版本非常稳定,因此这不应妨碍您使用它,但这绝对是一个需要考虑的问题。
关于javascript - Protovis 与 D3.js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6212104/
关闭。这个问题需要debugging details .它目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and th
我试图用这种形式简单地获取数字 28 integer+space+integer+integer+space+integer我试过这个正则表达式 \\s\\d\\d\\s 但我得到了两个数字11 和
最近一直在学习D语言。我一直对运行时感到困惑。 从我能收集到的关于它的信息中,(这不是很多)我知道它是一种有助于 D 的一些特性的运行时。像垃圾收集一样,它与您自己的程序一起运行。但是既然 D 是编译
想问一下这两个正则表达式有区别吗? \d\d\d 与 \d{3} 我已经在我的本地机器上使用 Java 和 Windows 操作系统对此进行了测试,两者都工作正常并且结果相同。但是,当在 linux
我正在学习 Go,而且我坚持使用 Go 之旅(exercise-stringer.go:https://tour.golang.org/methods/7)。 这是一些代码: type IPAddr
我在Java正则表达式中发现了一段令我困惑的代码: Pattern.compile( "J.*\\d[0-35-9]-\\d\\d-\\d\\d" ); 要编译的字符串是: String string
我在 ruby 代码上偶然发现了这个。我知道\d{4})\/(\d\d)\/(\d\d)\/(.*)/是什么意思,但是\1-\2-\3-\4 是什么意思? 最佳答案 \1-\2-\3-\4 是 b
我一直在努力解决这个问题,这让我很恼火。我了解 D 运行时库。它是什么,它做什么。我也明白你可以在没有它的情况下编译 D 应用程序。就像 XoMB 所做的那样。好吧,XoMB 定义了自己的运行时,但是
我有两个列表列表,子列表代表路径。我想找到所有路径。 List> pathList1 List> pathList2 当然是天真的解决方案: List> result = new ArrayList>
我需要使用 Regex 格式化一个字符串,该字符串包含数字、字母 a-z 和 A-Z,同时还包含破折号和空格。 从用户输入我有02-219 8 53 24 输出应该是022 198 53 24 我正在
目标是达到与this C++ example相同的效果: 避免创建临时文件。我曾尝试将 C++ 示例翻译为 D,但没有成功。我也尝试过不同的方法。 import std.datetime : benc
tl;dr:你好吗perfect forwarding在 D? 该链接有一个很好的解释,但例如,假设我有这个方法: void foo(T)(in int a, out int b, ref int c
有什么方法可以在 D 中使用abstract auto 函数吗? 如果我声明一个类如下: class MyClass { abstract auto foo(); } 我收到以下错误: mai
有没有人为内存中重叠的数组切片实现交集?算法在没有重叠时返回 []。 当 pretty-print (使用重叠缩进)内存中重叠的数组切片时,我想要这个。 最佳答案 如果您确定它们是数组,那么只需取 p
我已经开始学习 D,但我在使用 Andrei Alexandrescu 所著的 The D Programming Language 一书中提供的示例时遇到了一些麻烦。由于 int 和 ulong 类
如何创建一个不可变的类? 我的目标是创建一个实例始终不可变的类。现在我只是用不可变的方法和构造函数创建了一个“可变”类。我将其称为 mData,m 表示可变。然后我创建一个别名 alias immut
不久前我买了《The D Programming Language》。好书,很有教育意义。但是,我在尝试编译书中列出的语言功能时遇到了麻烦:扩展函数。 在这本书中,Andrei 写了任何可以像这样调用
我在 D http://www.digitalmars.com/d/2.0/lazy-evaluation.html 中找到了函数参数的惰性求值示例 我想知道如何在 D 中实现可能的无限数据结构,就像
这个问题在这里已经有了答案: 12 年前关闭。 Possible Duplicate: Could anyone explain these undefined behaviors (i = i++
当前是否可以跨模块扫描/查询/迭代具有某些属性的所有函数(或类)? 例如: source/packageA/something.d: @sillyWalk(10) void doSomething()
我是一名优秀的程序员,十分优秀!