我在我的项目中多次使用了chart.js,但我从未使用过d3.js。很多人说d3.js是最好的JavaScript图表框架,但他们却无法解释为什么,特别是当我需要与chart.js进行比较时。
我找到了这个网站:http://www.fusioncharts.com/javascript-charting-comparison/ 但这不是我想要的。
有人知道这些框架在可用性和性能方面(仅限于图表)的比较吗?
我在我的项目中多次使用了chart.js,但我从未使用过d3.js。很多人说d3.js是最好的JavaScript图表框架,但他们却无法解释为什么,特别是当我需要与chart.js进行比较时。
我找到了这个网站:http://www.fusioncharts.com/javascript-charting-comparison/ 但这不是我想要的。
有人知道这些框架在可用性和性能方面(仅限于图表)的比较吗?
d3.js
不是一个"图表"库。它是一个用于创建和操作SVG/HTML的库。它提供了工具来帮助您可视化和操作数据。虽然您可以使用它来创建传统的图表(柱状图、折线图、饼图等),但它还能做更多的事情。当然,这种"能做更多"也意味着学习曲线更陡峭。如果您想选择这条路线,还有很多基于d3.js
的传统图表库,如nvd3.js
、dimple.js
、dc.js
。
Chart.js
基于canvas,而d3.js
主要是关于SVG。(现在我说“主要”是因为d3.js
可以操作所有类型的HTML元素,所以你甚至可以用它来帮助你在canvas上绘图。)总的来说,对于许多元素,canvas的性能要优于SVG(我指的是大规模的-成千上万个点、线等等...)。由于我正在寻找一款快速的图表库来在移动设备上显示图表,因此性能对我来说非常重要。它还必须具有商业使用许可证。我进行了比较:
这些图表加载在本地应用程序内的WebView组件中,所有数据(包括JS库)都是本地的,因此不会因为http请求而减慢速度。为了进一步提高性能,我将所有内容放入一个单一文件中。
我加载了4个图表(线性、条形、饼状、线性/条形组合),共计约500个数据点。
我的时间测量排除了实际加载HTML页面的时间。我从开始使用图表库代码到渲染结束的时间进行测量。所有图表动画都已关闭。
在现代Android和iPhone设备上,C3大约需要1500-1800毫秒。 iPhone的表现比Android好了大约100毫秒。
Chart.js大约需要400-800毫秒。 Android的表现比iPhone好了大约300毫秒。
毫不奇怪,SVG更慢。根据您的用例,可能太慢了。
在台式电脑上,C3的渲染时间约为150-200毫秒,而Chart.js约为80-100毫秒。在Android和iPhone模拟器中运行相同的测试与桌面上的结果相同。因此,在移动设备上的减速明显是由于硬件/处理限制引起的。
希望这有所帮助