我需要为“标准”图表选择一个库:馅饼,线条和条形图。
根据我的阅读,在我看来,最好的格式是SVG / VML,例如Highcharts。现在,IE 9已经成为所有主流浏览器的标准配置。重新缩放和导出似乎比Canvas更容易。
不过,我看到几个图表库依赖于Canvas。我错过了什么吗?是否有任何理由考虑使用Canvas over SVG进行此类应用?
答案 0 :(得分:8)
通常,您可以获得相同的结果。两者最终都为用户绘制了屏幕像素。主要区别在于HTML5 Canvas为您提供了对结果(读取和写入)的像素级控制,而SVG是保留模式图形API ,可以非常轻松地处理事件或操作使用JavaScript或SMIL动画的艺术作品,并为您重新绘制所有重绘。
一般情况下,我建议您使用HTML5 Canvas:
如果您:
使用SVG答案 1 :(得分:5)
除非您需要大量操作/动画或者要拥有10,000多张图表,否则不需要画布。有关绩效分析的更多信息here.
区分也很重要:图表和图表是两回事。显示几个条形图与(例如)制作包含10,000个可移动,可链接,可能动画的对象的流程图非常不同。
每个SVG元素都是一个DOM元素,向DOM添加10,000或100,000个节点会导致令人难以置信的减速。但是向Canvas添加许多元素是完全可行的,而且可以非常快。
如果它可能让你困惑:RaphaelJS(在我看来最好的图表SVG库)使用了canvas这个词,但这与HTML <canvas>
元素无关。
答案 2 :(得分:0)