在讨论关于可视化数据之前先来理解一下基础概念,关于Canvas与SVG是什么的问题?
Canvas:Canvas 通过 JavaScript 来绘制 2D 图形;Canvas 是逐像素进行渲染的;在 canvas 中,一旦图形被绘制完成,它就不会继续得到浏览器的关注。如果其位置发生变化,那么整个场景也需要重新绘制,包括任何或许已被图形覆盖的对象。
SVG: SVG 是一种使用 XML 描述 2D 图形的语言;SVG 基于 XML,这意味着 SVG DOM 中的每个元素都是可用的。您可以为某个元素附加 JavaScript 事件处理器;在 SVG 中,每个被绘制的图形均被视为对象。如果 SVG 对象的属性发生变化,那么浏览器能够自动重现图形。
对比来看:
1)Canvas提供的功能更原始,适合像素处理,动态渲染和大数据量绘制
2)SVG功能更完善,适合静态图片展示,高保真文档查看和打印的应用场景
3)Canvas是使用JavaScript程序绘图(动态生成),SVG是使用XML文档描述来绘图。
从这点来看:SVG更适合用来做动态交互,而且SVG绘图很容易编辑,只需要增加或移除相应的元素就可以了。
同时SVG是基于矢量的,所有它能够很好的处理图形大小的改变。Canvas是基于位图的图像,它不能够改变大小,只能缩放显示;所以说Canvas更适合用来实现类似于Flash能做的事情(当然现在Canvas与Flash相比还有一些不够完善的地方)。
通过了解我们知道了Canvas和SVG是个什么东西有什么区别之后,接下来我们就可以讨论关于在Web 上数据可视化的问题?
先看看阿里的 目前来说是数据可视化非常强的一个工具;
围绕:数据的可视化问题有哪些,概念是什么,我们怎样在数据之上搭建我们自己的可视化工具