Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/413.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 饼图、条形图、线条:SVG/VML优于画布_Javascript_Canvas_Charts_Svg_Pie Chart - Fatal编程技术网

Javascript 饼图、条形图、线条:SVG/VML优于画布

Javascript 饼图、条形图、线条:SVG/VML优于画布,javascript,canvas,charts,svg,pie-chart,Javascript,Canvas,Charts,Svg,Pie Chart,我需要为“标准”图表选择一个库:饼、线和条 从我所读到的内容来看,在我看来最好的格式是SVG/VML,比如Highcharts。现在,随着IE9的接受,SVG正在成为所有主流浏览器的标准。它似乎比画布更容易重新缩放和导出 尽管如此,我还是看到一些图表库依赖于画布。我错过什么了吗?有什么理由考虑将画布置于SVG之上用于此类应用程序吗?除非您需要大量的操作/动画或将有10000多个图表,否则不需要画布。更多关于性能分析的信息 区分也很重要:图表和图表是两件不同的事情。显示几个条形图与(例如)绘制10

我需要为“标准”图表选择一个库:饼、线和条

从我所读到的内容来看,在我看来最好的格式是SVG/VML,比如Highcharts。现在,随着IE9的接受,SVG正在成为所有主流浏览器的标准。它似乎比画布更容易重新缩放和导出


尽管如此,我还是看到一些图表库依赖于画布。我错过什么了吗?有什么理由考虑将画布置于SVG之上用于此类应用程序吗?

除非您需要大量的操作/动画或将有10000多个图表,否则不需要画布。更多关于性能分析的信息

区分也很重要:图表和图表是两件不同的事情。显示几个条形图与(例如)绘制10000多个可移动、可链接、可能具有动画对象的流程图非常不同

每个SVG元素都是一个DOM元素,向DOM添加10000或100000个节点会导致难以置信的速度减慢。但向画布中添加许多元素是完全可行的,而且可以非常快


为了避免让您感到困惑:RaphaelJS(在我看来是最好的SVG图表库)使用了单词canvas,但这与HTML
元素没有任何关系。

您通常可以使用这两个元素获得相同的结果。两者最终都会为用户在屏幕上绘制像素。主要的区别在于HTML5画布为您提供了对结果(读写)的像素级控制,而SVG是一种保留模式图形API,可以非常轻松地使用JavaScript或SMIL动画处理事件或操纵艺术品,并为您处理所有重绘

一般来说,如果您:

  • 需要对效果进行像素级控制(例如模糊或模糊)
  • 拥有大量数据点,这些数据点只会显示一次(可能会平移),但在其他方面是静态的
如果您:

  • 希望在屏幕上绘制的复杂对象与事件关联(例如,移动数据点以查看工具提示)
  • 希望结果能够以高分辨率打印
  • 需要独立地为各种图形部件的形状设置动画
  • 将在您的输出中包含您希望被搜索引擎索引的文本
  • 要使用XML和/或XSLT生成输出吗

在过去两年中,我的首选是使用svg,因为我主要处理相对较小的数据集来构建PIE、柱状图或地图


然而,我发现canvas的一个优点是,由于该方法,它能够将图表保存为图像。我还没有找到svg的等价物,似乎保存svg图表客户端的最佳方法是首先将其转换为画布(例如使用)。

您的主题中有“更好”一词,这清楚地表明您的主题将作为一个主观问题结束。此外,更糟糕的是,您实际上没有指定衡量“更好”的标准。大多数浏览器都可以访问?被大多数用户访问?渲染类似结果的速度最快?使用的内存量最少?最容易编写交互脚本?搜索引擎可以抓取的数据?我希望我一开始就知道这些标准。。。例如,搜索引擎是一个我甚至没有想到的好引擎。