Javascript 饼图、条形图、线条:SVG/VML优于画布
我需要为“标准”图表选择一个库:饼、线和条 从我所读到的内容来看,在我看来最好的格式是SVG/VML,比如Highcharts。现在,随着IE9的接受,SVG正在成为所有主流浏览器的标准。它似乎比画布更容易重新缩放和导出Javascript 饼图、条形图、线条:SVG/VML优于画布,javascript,canvas,charts,svg,pie-chart,Javascript,Canvas,Charts,Svg,Pie Chart,我需要为“标准”图表选择一个库:饼、线和条 从我所读到的内容来看,在我看来最好的格式是SVG/VML,比如Highcharts。现在,随着IE9的接受,SVG正在成为所有主流浏览器的标准。它似乎比画布更容易重新缩放和导出 尽管如此,我还是看到一些图表库依赖于画布。我错过什么了吗?有什么理由考虑将画布置于SVG之上用于此类应用程序吗?除非您需要大量的操作/动画或将有10000多个图表,否则不需要画布。更多关于性能分析的信息 区分也很重要:图表和图表是两件不同的事情。显示几个条形图与(例如)绘制10
尽管如此,我还是看到一些图表库依赖于画布。我错过什么了吗?有什么理由考虑将画布置于SVG之上用于此类应用程序吗?除非您需要大量的操作/动画或将有10000多个图表,否则不需要画布。更多关于性能分析的信息 区分也很重要:图表和图表是两件不同的事情。显示几个条形图与(例如)绘制10000多个可移动、可链接、可能具有动画对象的流程图非常不同 每个SVG元素都是一个DOM元素,向DOM添加10000或100000个节点会导致难以置信的速度减慢。但向画布中添加许多元素是完全可行的,而且可以非常快
为了避免让您感到困惑:RaphaelJS(在我看来是最好的SVG图表库)使用了单词canvas,但这与HTML
元素没有任何关系。您通常可以使用这两个元素获得相同的结果。两者最终都会为用户在屏幕上绘制像素。主要的区别在于HTML5画布为您提供了对结果(读写)的像素级控制,而SVG是一种保留模式图形API,可以非常轻松地使用JavaScript或SMIL动画处理事件或操纵艺术品,并为您处理所有重绘
一般来说,如果您:
- 需要对效果进行像素级控制(例如模糊或模糊)
- 拥有大量数据点,这些数据点只会显示一次(可能会平移),但在其他方面是静态的
- 希望在屏幕上绘制的复杂对象与事件关联(例如,移动数据点以查看工具提示)
- 希望结果能够以高分辨率打印
- 需要独立地为各种图形部件的形状设置动画
- 将在您的输出中包含您希望被搜索引擎索引的文本
- 要使用XML和/或XSLT生成输出吗
然而,我发现canvas的一个优点是,由于该方法,它能够将图表保存为图像。我还没有找到svg的等价物,似乎保存svg图表客户端的最佳方法是首先将其转换为画布(例如使用)。您的主题中有“更好”一词,这清楚地表明您的主题将作为一个主观问题结束。此外,更糟糕的是,您实际上没有指定衡量“更好”的标准。大多数浏览器都可以访问?被大多数用户访问?渲染类似结果的速度最快?使用的内存量最少?最容易编写交互脚本?搜索引擎可以抓取的数据?我希望我一开始就知道这些标准。。。例如,搜索引擎是一个我甚至没有想到的好引擎。