首页 文章

d3.js和chart.js之间的比较(仅适用于图表)

提问于
浏览
54

我在我的项目中多次使用过chart.js,但我从未使用过d3.js.很多人说d3.js是图表最好的javascript框架,但没有一个能解释原因,尤其是当我想要与chart.js进行比较时 .

我发现了这个:http://www.fusioncharts.com/javascript-charting-comparison/但它不是我想要的 .

有没有人知道这些框架在可用性和性能方面的比较(仅适用于图表)?

3 回答

  • 15

    d3.js is not a "charting" library. 这是一个用于创建和操作SVG / HTML的库 . 它提供了一些工具来帮助您可视化和操作数据 . 虽然你可以用它来创建传统的图表(条形图,线条图,饼图等)但它能够做得更多 . 当然,有了这个"capable of so much",学习曲线更加陡峭 . 如果你想走这条路线,有很多传统的图表库 Build 在 d3.js - nvd3.jsdimple.jsdc.js 之上 .

    我不熟悉 Chart.js 但是快速浏览一下这个网站就告诉我stuff like this with it . But API看起来很简单,而且我很容易使用 .

    除此之外,两者之间最明显的区别是 Chart.js 是基于画布的,而 d3.js 主要是关于SVG . (现在我说主要是因为 d3.js 可以操纵所有类型的HTML元素,所以you could even use it可以帮助你在画布上绘图 . )一般来说,canvas会为大量元素执行SVG(我通常都不会注意到 . 这是来自Microsoft的some good reading .

  • 151

    由于我试图找到一个快速图表库来显示移动设备上的图表,因此性能对我来说非常重要 . 它还必须拥有可以商业使用的许可证 . 我比较了:

    • c3,它基于d3,因此使用SVG
      使用canvas的
    • chart.js

    图表在本机应用程序内的WebView组件内加载,所有数据(包括JS库)都是本地的,因此不会因http请求而减慢速度 . 为了最大限度地提高性能,我还将所有内容都放在一个文件中 .

    我加载了4个图表(线条,条形图,饼图,线条/条形图组合),大约有500个数据点 .

    我的时间测量排除了html页面的实际加载 . 我在开始使用图表库代码的那一刻开始测量,直到渲染结束 . 所有图表动画都已关闭 .

    在现代Android和iPhone设备上,C3大约需要1500-1800毫秒 . iPhone的表现比Android好100ms .

    Chart.js花了大约400-800ms . Android的表现比iPhone好大约300毫秒 .

    毫不奇怪,SVG速度较慢 . 根据您的使用情况,可能太慢 .

    在台式计算机上,在c3中渲染大约150-200ms,chart.js大约80-100ms . 在Android和iPhone模拟器中运行相同的测试与在桌面上运行相同 . 因此,移动设备的减速肯定是由于硬件/处理限制 .

    希望有所帮助

  • 17

    UPDATED 2016

    一般的经验法则是:

    d3.js - 非常适合交互式可视化

    chart.js - 非常适合快速而简单

    A few other charting libraries正在上升,所以继续测试,不要忘记贡献open source

相关问题