Answers:
越来越多的不需要Flash的用于纯JavaScript制图的开源和商业解决方案。在此回复中,我将仅介绍开放源代码选项。
有两种主要的JavaScript解决方案,它们不需要Flash的图形解决方案:
两种方法都有优点和缺点,但对于制图库,我会推荐后者,因为它与DOM集成良好,可以使用DOM操作图表元素,最重要的是设置DOM事件。相比之下,Canvas图表库必须重新发明DOM轮以管理事件。因此,除非您打算构建没有事件处理的静态图,否则SVG / VML解决方案应该更好。
对于SVG / VML解决方案,有很多选择,包括:
Raphael是一个非常活跃,维护良好且成熟的开源图形库,具有很好的跨浏览器支持,包括IE 6至8,Firefox,Opera,Safari,Chrome和Konqueror。Raphael不依赖任何JavaScript框架,因此可以与Prototype,jQuery,Dojo,Mootools等一起使用。
有许多基于Raphael的制图库,包括(但不限于):
披露:我是github上Ico分支之一的开发人员。
如果您使用的是jQuery,我发现flot非常好-试试示例以查看它们是否满足您的需求,但是我发现它们可以满足当前项目的大部分需求。
另外,ExtJS 4.0引入了一套非常强大的图表-非常强大,并且旨在处理实时数据。
Highcharts是一个用纯JavaScript编写的图表库,它提供了一种将交互式图表添加到您的网站或Web应用程序的简便方法。Highcharts当前支持折线图,样条图,面积图,面线图,柱形图,条形图,饼图和散点图类型。
它可能并不完全符合您的要求,但是
Google的Chart API非常酷并且易于使用。
还有另一个基于SVG的JavaScript库。它被称为Protovis,来自斯坦福视觉化集团
它还允许制作精美的交互式图形和可视化图像。
http://vis.stanford.edu/protovis/ex/
虽然仅适用于现代Web浏览器
更新: protovis团队已经转移到另一个名为d3.js(数据驱动文档)的库,因为他们说:
“ Protovis团队现在正在开发新的可视化库D3.js,并增强了对动画和交互的支持。D3建立在Protovis的许多概念之上”
现在可以在以下位置找到新库:
http://mbostock.github.com/d3/
更新2:
“人力车”是用于创建交互式时间序列图的JavaScript工具箱。尽管基于d3.js的功能稍差一些,但它简化了d3.js的工作。
我最近在寻找一个javascript图表库,并在最终决定使用jqplot之前评估了一大堆选择非常适合我的。正如Jean Vincent的回答所提到的,您实际上是在基于画布的解决方案和基于svg的解决方案之间进行选择。
在我看来,主要优点和缺点如下。如果您要构建高度动态/交互式的图表,则基于Ravel(和分支)之类的基于SVG的解决方案非常有用。或者,如果您对制图的要求远远超出了常规(例如,您想创建某种混合图,或者您想出了一种新的可视化效果,而其他人还没有想到)。缺点是学习曲线和您必须编写的代码量。您不会在几分钟之内就搞定图表,准备投入一些实际的学习时间,然后编写大量的代码来生成相对简单的图表。
如果您的制图要求是合理的标准,例如,您需要一些交互性有限的折线图或条形图,或者一两个饼图,那么值得考虑基于画布的解决方案。几乎没有学习曲线,您将能够在几分钟之内获得基本图表,您无需编写大量代码,只需几行基本的javascript / jquery就可以了。当然,您将只能生成库支持的特定类型的图表,通常仅限于各种样式的折线,条形图,饼图。交互性选择将受到极大的限制,也就是说,对于其中的许多库来说,都不存在,尽管更好的库可能会产生一些有限的悬停效果。
我选择了JQplot,它是基于画布的解决方案,因为我只需要一些标准类型的图表即可。通过我的研究和各种选择,我发现它功能齐全(如果您只追求标准图表)并且非常易于使用,因此如果您的要求相似,我建议您这样做。
总结起来,现在就简单和想要图表,然后使用JQplot。复杂/不同,没有时间紧迫,然后与Raphael和朋友一起去。
作为某种较晚的答案,请尝试d3.js
http://mbostock.github.com/d3/
这是protovis的延续。
flot的最大区别在于支持的功能数量。
尽管flot可能更简单,但d3.js绝对更强大。
dojo图表库中有很多活动,而且在AIR应用程序中使用它也没有问题,这太好了,太酷了!参见例如http://www.sitepen.com/blog/2008/05/27/dojo-charting-event-support-has-landed/
http://code.google.com/apis/visualization/documentation/gallery.html
具有非常酷的交互选项,包括地图,量表和图表。
我们刚刚为新创业公司购买了TechOctave Charts Suite的许可证。我强烈推荐他们。许可很简单。图表看起来很棒!它很容易上手,并且在需要时具有强大的API。代码多么干净和可扩展,令我感到震惊。真的很满意我们的选择。
尝试将MIT明喻的时间线制成图表-http: //simile.mit.edu/timeline/
原型图就是您所需要的
Sencha收购了Raphael,现在他们的图表从版本4开始就是纯JavaScript。上面提到的Emprise和HighCharts是我的两个最爱。
有关更不寻常的图表:http : //thejit.org/
我可以推荐 ArcadiaCharts。用于JavaScript和GWT的全新专业图表库。在没有插件的所有浏览器中运行。易于使用和快速:仅需几行代码即可创建美观的图表。免费用于非商业用途。
如果您只需要条形图。我发布了一些在旧项目中一直使用的代码。有人告诉我,VML的实现在IE的最新版本上已被破坏,但是SVG应该可以正常工作。可能会回到项目并发布一些我已经拥有的服务器端渲染器,也许还会发布WebGL渲染层。有一个链接:http : //blog.conquex.com/?p=64
可能不是OP在寻找什么,但是由于这个问题已成为JS图表库选项的列表,因此:jQuery Sparklines确实很棒。
查看ZingChart HTML5 Canvas,SVG,VML和Flash Charts。非常强大且兼容的库。我在Zing团队中-在Twitter @zingchart上提及我们,或将任何问题发送至support@zingchart.com。