canvas教程

我涉及的数据可视化的实现技术和工具(2)

字号+ 作者:H5之家 来源:H5之家 2015-10-20 13:41 我要评论( )

D3的全称是Data-Driven Documents(数据驱动文档),在github上关注数量超过了2万人(超过了所有canvas类库的关注数量),是非常受欢迎的开源工具。使用d3的有开发者,有设计师,有艺术家,资料非常丰富(虽然中文的

D3的全称是Data-Driven Documents(数据驱动文档),在github上关注数量超过了2万人(超过了所有canvas类库的关注数量),是非常受欢迎的开源工具。使用d3的有开发者,有设计师,有艺术家,资料非常丰富(虽然中文的很少)。关于D3的我的应用案例可以见我之前的文章《D3js初探及数据可视化案例设计实战》。

那么接着说说D3的优缺点(基本上也就是SVG的优缺点):

优点:

缺点;

最后,补充一个问题,如何在IE6这样的古董浏览器上绘制可交互的统计图形?
经过我长期摸索实践,结论是,不要试图这样做。即便是VML兼容方案性能也很差。在IE6上最靠谱的做法是用php或者java直接在后台绘制一个jpg图片,然后发到IE6上显示。这个方法也是5,6年前最通用的做法,现在已经过时了。最好的策略是,不要对IE6兼容,实在不行的话就显示一个不能动的图片吧!珍惜时间,珍惜生命,远离IE6!

 

3. webGL

前面说的绘图技术,无论canvas还是SVG都不能绘制3D图形。我曾经见过很多在网页上显示3d图形的方案,但都需要你的电脑上安装相应的插件(例如flash, silverlight)或者事先安装虚拟机(例如java)。之前曾经有过很多web 3D渲染技术,但不是要下插件,就是编程复杂,于是渐渐被时代淘汰,例如VRML,约翰•卡马克已经宣布了它的死亡。难道就没有一个开源的通用标准显示3D图形吗?

当然是有的。这货叫webGL, 是一项使用JavaScript实现3D绘图的技术,浏览器无需插件支持,Web开发者直接使用js调用相关API就能借助系统显卡(GPU)进行编写代码从而呈现3D场景和对象。

WebGL标准由科纳斯组织(Khronos Group)开发和维护,Google、Mozilla、Opera和Apple 等浏览器厂商都是其中的成员,为这一标准做出了显著贡献。从名称上我们就可以知道WebGL跟openGL肯定是小弟与大哥的关系。事实上webGL是基于OpenGL ES 2.0开发的,OpenGL ES 是 OpenGL 三维图形 API 的子集,针对手机、平板电脑和游戏主机等嵌入式设备而设计。浏览器内核通过对OpenGL API的封装,实现了通过JavaScript调用3D的能力。WebGL 内容作为 HTML5 中的Canvas标签的特殊上下文实现在浏览器中(这下canvas终于可以画3D图了,虽然用的是不同技术)。

webGL诞生时期放出的经典例子:深海水族馆

webGL技术从初创到现在也不过2年多的时间(2011年发布标准),但是发展很快。一开始傲娇的微软认为该技术有极大的安全漏洞而拒绝使用(因为相当于让web脚本直接控制了显卡这么重要的硬件,同时有没有类似windows update这样的更新程序来弥补漏洞),但是现在也放下身段在IE12里面支持了此物。原因无他,就是HTML5带来的潮流:在功能上,web应用将会越来越像内建应用。它可以调用显卡,调用麦克风,调用摄像头,调用一切能用的硬件去提升服务质量。这一切都基于浏览器的支持。

webGL的各大浏览器支持情况(截至2013年11月):

桌面浏览器

移动浏览器

从上面的支持情况列表我们可以发现,支持情况还是比较可喜的,至少现代浏览器都支持,移动端和IE略有落后。不过毕竟这个技术还是新鲜事物,在国内能找到的资料还很少,国内前端技术圈讨论也不多,是真正的技术蓝海。本人并没有实际开发过webGL程序,目前还停留在观察阶段。若有工作需求,会将其列入研究重点。

让我们查看一些webGL的案例,当然是mozilla demostudio的最好。

最后,让我们提一提webGL的JS框架,它们可以减少工作量并提供一些有趣的例子。

  • philoGL,专注于3D可视化的一个webGL框架。
  • threee.js, 谷歌团队Data Arts出品的基于webGL的3D场景库,它的演示十分有趣。
  •  

    4.flash & actionscript

    flash这个东西我是又爱又恨。爱是说我从初衷起就接触过这个东西,很喜欢它做的flash动画,并在大一大二也学过一阵;恨的是flash与web页面其实是完全分离的玩意,不仅要用自己的一套actionscript编写(并且as不如JS好使,我个人感觉),加载也要下载插件。在HMTL5+JS+CSS3的时代,越发觉得flash的大多数功能已被替代。

    犹记当年乔教主2010年就怒喷过flash,认为它是移动端的阻碍,不适合触摸设备,技术封闭,已经过时。并且宣布苹果公司的产品在日后不支持flash。此举立即得到了微软、谷歌的响应。尤其是在经过HTML5的一番宣传以后,2010年前后大家都看淡flash的前景而看好HTML5。但是作为flash的老东家Adobe公司的发言人却一再表示:flash已经应用的非常普遍,想把我们一脚踹开是不可能的。现在究竟是鹿死谁手呢?经过3年的折腾,我们看到flash还是好端端地活着,当然份额确实减少了些。苹果还是立场坚定地拒绝flash支持html5,但是html5发展并不顺利;谷歌一面支持html5,一面也支持flash(你看现在的android手机不支持个flash都不好意思出门),同时还在折腾自己的视频标准害的HMTL5的视频标准一再难产;微软则在旁观,同时养活着flash,html5和自家的silverlight。可以说HMTL5联盟曾经试图联手杯葛flash, 结果由于各家心怀鬼胎而失利。HTML5的最终效果也没有完全达到flash的水准,虽然在很多领域(例如样式、绘图等等)已经基本上差不多了,但是至少在动画编辑这一块,HTML5至今也没有一个像adobe  flash cs5 这么强大易用的编辑工具。

    当初flash之所以能实现很多web页面不能实现的功能,是因为web标准从一开始就被设计地注重安全性,不能操作本地资源(典型的例子,到现在JS都不能操作内存);而flash是个本地程序,可以自由地调动本地资源,所以可以实现很多需要耗费大量本地资源的效果,例如2D动画、3D动画。但是随着计算机功能越发完善,很多2000年初很耗费资源的功能,现在看起来不值一提。HTML5则是从浏览器标准一级,要求浏览器能调用这些本地资源。这就是之前所说的HTML5带来的潮流:在功能上,web应用将会越来越像内建应用。所以未来flash终将被淘汰。但是adobe不会因此饿死,因为Adobe也不是用flash来赚钱,而是用flash编辑器来赚钱,如今也在flash编辑器中加入了html5元素,保证就算flash完蛋也能继续挣钱。

     

    1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

    相关文章
    • javaccf画图测试数据字符串匹配

      javaccf画图测试数据字符串匹配

      2017-03-21 15:03

    • 让地图讲故事的秘密:数据可视化

      让地图讲故事的秘密:数据可视化

      2017-02-18 10:03

    • HTML5音乐可视化

      HTML5音乐可视化

      2017-02-05 16:02

    • canvas 画图工具

      canvas 画图工具

      2017-01-22 10:01

    网友点评