JavaScript绘图库

目前市面上有许多绘图库,这里不能展开一一讨论。它们是开源的,但是一些库很短命,有一些则只能绘制基础图形,例如饼图、线图、条形图,看起来像是一个未完成的库。这里,重点讨论了几个商业和开源产品,包括所有的基础图表(有些也有扩展图表)。因为SVG和Canvas并不被旧的浏览器所支持,所以其中一些库为了后向兼容,一直支持Flash插件。有些库对商业用途的使用并不免费,这可以理解,他们也提供了非常优惠的价格。

访问http://code.google.com/p/explorercanvas/ 有许多库提供了在IE9下模拟canvas

jqPlot

jqPlot包含了基本的图标,以及仪表盘和K线(candlestick)。开源,免费。jqPlot是基于jQuery库使用canvas绘图的。该产品和Flot/Flotr看上去很像。此外,jqPlot支持给列图和线图添加动画,但是饼图不行。这可能是canvas方法实现时一般性问题。它的文档比其他自由软件更完整。

amCharts

amCharts 提供了一套完整的2D、3D图表,如雷达图,气泡图,燃尽图以及雷达图。所有的图表都很酷,而且有动画。amCharts虽然可以免费的用于商业产品,但是在左上角会显示一个标签。唯一的一点小缺点构造器API似乎有点笨拙。每一个属性都要通过调用方法或赋值语句明确赋值。

Ext JS 4 Charts

Ext Js 是一个非常流行的Ajax应用框架,由web应用开发的先驱Sencha公司开发。Ext JS 4 提供了一个纯JavaScript绘图库,而不是像之前的ExtJs3使用YUI 2 Flash绘图库。随着市场逐渐远离Adobe Flash的趋势,Sencha开发的绘图库也响应了这种趋势。Ext Js 4 覆盖了基本的2D图表,而且所有的图表都支持动画。在开源和非商业用途中,可以使用免费的许可证,对于商业开发则需要一个开发者许可证。Ext JS 4 图表最大的好处就是和它UI组件的集成,例如,和存储框架整合的图表,显示/更新图表和可编辑的表格里的数据都非常简单。

YUI 3 Charts

YUI 3 是另外一个流行的Ajax应用框架,使用BSD许可证。YUI 3 已经移除了对Flash的支持,实现了他们自己的JavaScript图表。新版本所有的基本图表都是用2D绘制,并不支持动画。但是,线图看起来高于平均水品,柱状图和饼图看着很基础。就像Sencha的Ext JS,YUI的图也可以和框架的其他组件很好的集成。

FusionCharts

FusionCharts 可能是最令人印象深刻的一个,图表类型是市场上最全面的。他不仅包括全类型的2D图表(雷达,指针盘,地图和燃烛图),而且有完全交互的3D图。所有的图表动画都显得非常专业。基本上,FusionCharts都可以运行在Flash或者JavaScript两种模式下。在JavaScript模式下,Fusioncharts使用他们自己扩展过的Highcharts库以获得一样的2D和3D效果,看起来和其Flash版本一模一样。虽然FusionCharts价格不菲,但也只有这个产品可以提供最好看的图表,以及可旋转的3D图表。

JS Charts

JS Charts 提供全部基础的2D和3D图表。JS Charts使用HTML5的canvas技术绘制图表。条状图和线图的动画效果看起来不错,但是,饼图看起来就没那么先进了,而且不支持动画。非商业用途免费,商业许可证是以每个域名为计费单位的。构造器API和amCharts类似,必须通过调用方法完成赋值。

Flot and Flotr

Flot 使用MIT许可证,提供2D图表,不提供绘制时动画效果。它是一个基于canvas和jQuery框架的产品。生成的线图非常好看,但是条形图和饼图(需要一个插件)稍逊一筹。文档不是非常全面,更新也不太活跃。Flotr是另外一个绘图包,线图样式和Flot相同,是基于Prototype框架实现的。Flotr提供了更好看的条状图和饼图,包括燃烛图和雷达图。但是,Flotr比Flot的活跃度更低,两个产品都像是已经结束了整个产品生命周期。