在Ruby on Rails Web应用程序中生成图表的首选方法是什么?

时间:2008-09-17 20:53:42

标签: ruby-on-rails ruby charts

我想在我的Ruby on Rails Web应用程序中添加一些饼图,条形图和散点图。我想要他们有魅力,容易添加,而不是引入太多开销。

您会推荐哪种图表解决方案?
它的缺点是什么(需要Javascript,Flash,昂贵等)?

30 个答案:

答案 0 :(得分:59)

如果您不想使用Flash,

Google Charts是一个很好的选择。它本身很容易使用,但对于Rails,使用gchartrb gem更容易。一个例子:

GoogleChart::PieChart.new('320x200', "Things I Like To Eat", false) do |pc| 
  pc.data "Broccoli", 30
  pc.data "Pizza", 20
  pc.data "PB&J", 40 
  pc.data "Turnips", 10 
  puts pc.to_url 
end

答案 1 :(得分:15)

如果您不需要图像,并且可以满足于需要JavaScript,您可以尝试像jQuery插件flot这样的客户端解决方案。

答案 2 :(得分:13)

我是Gruff Graphs的粉丝,但如果您不介意依赖外部服务器,Google Charts也很好。

答案 3 :(得分:8)

需要闪存,而不是免费的(虽然便宜):amcharts

我已成功使用它并喜欢它。我前一段时间评估了一些选项并选择了它。然而,当时谷歌图表并不像现在看起来那么成熟。如果我现在要重新评估的话,我会先考虑一下。

答案 4 :(得分:7)

还有Scruffy。我最近看了一下代码,看起来很容易修改/扩展。它产生svg和(通过转换)png。

答案 5 :(得分:6)

Open Flash Chart II是一个免费选项,可以提供非常好的输出。正如您所料,它确实需要Flash。

Fusion Charts更好,但是499美元。在研究这个问题时,我发现a cut-down free version可能会满足您的需求。

答案 6 :(得分:6)

你试过Google Charts API吗? - Web服务API实际上并没有那么简单。它可以免费使用,操作简单,图表看起来也不会太糟糕。

答案 7 :(得分:6)

我第二次投票给flot。最新版本允许您做一些我以前认为只能通过Flash实现的动画和动作。文档太棒了。手动编写很简单,但对于简单的情况,使用名为flotilla的Rails插件会更容易。您应该查看examples page以更好地了解它的功能。缩放和悬停功能尤其令人印象深刻。

答案 8 :(得分:4)

新的Google Visualization似乎可以生成比Google Graphs更多样化,更好看和互动的图表。

http://code.google.com/apis/visualization/

答案 9 :(得分:4)

Morris.js很好,开源。我想选择它与highcharts相比。有一个来自Railscasts

的新视频教程

答案 10 :(得分:3)

我刚刚发现ZiYa产生了一些非常性感的图表,并且特定于Rails。

缺点是它使用Flash,如果您不希望网站链接到XML / SWF页面,则每个站点的费用为50美元。

[我还没决定,但想把它扔出去以防人们想投票]

答案 11 :(得分:3)

我在Java Web应用程序中广泛使用了Fusion Charts,但它应该以与Rails相同的方式工作,因为您只是通过HTML或JavaScript嵌入Flash并传递XML数据。这是一个光滑的包,他们的支持一直非常敏感。

答案 12 :(得分:3)

您应该查看名为Dmitry Baranovskiy'sRaphaël Javascript库。

答案 13 :(得分:2)

我已经开始使用protovis生成带有javascript的SVG图表。我在rails中的基本方法是让一个控制器返回要作为JSON绘制的数据,并用一些javascript和protovis进行挖掘。

唯一的缺点是,完整的IE支持(因为它基于SVG)目前无法直接开箱即用......但是,当前的补丁是提供IE支持的公平方式,可以找到其详细信息{ {3}}

答案 14 :(得分:2)

GoogleCharts和Gruff图表很棒,但有时它们缺少一些我需要更多科学绘图的功能。 gnuplot有一个宝石,可能对某些情况有帮助。

http://rgplot.rubyforge.org/

答案 15 :(得分:2)

关于amcharts,有一个“免费”版本,其中包含极少数限制,可生成Flash图表,包括“amCharts.com图表”。

还有一个很好的插件ambling,它为您提供了一些辅助方法,可以轻松地将视图添加到视图中。请注意,amCharts.com reference documentation仍然是根据您的要求定制图表的必要条件。

答案 16 :(得分:2)

在过去,我决定自己动手(使用RVG / RMagick),主要是因为Gruff没有我想要的一切。缺点是找到并消除图形代码中的所有错误是一件痛苦的事。这些天Gruff是我的选择,因为它在定制和灵活性方面真的很好。

标准的Gruff模板/颜色选择很糟糕,所以你需要弄脏手来获得最佳效果。

答案 17 :(得分:2)

谷歌图表非常好,但它不是仅限铁路的解决方案。您可以简单地使用您选择的编程语言来动态生成包含数据的网址,而google会使您的图表返回一个漂亮的图像。

http://code.google.com/apis/chart/

答案 18 :(得分:1)

似乎不再维护gchartrb gem。作者points对这些宝石:

答案 19 :(得分:1)

我个人更喜欢基于JavaScript的图表而不是Flash。如果没关系,也请查看High Charts。还可以使用Rails plugin

答案 20 :(得分:0)

D3已成为我向网络应用添加精美图表的首选方式。你必须做一些其他框架的mroe工作,但外观和控制超过了这一点。

我主要使用SVG,这意味着没有IE8,但这已成为一个问题。

答案 21 :(得分:0)

HighChart - 用纯JavaScript编写的图表库

highchart-railslazy-high-chart这样的宝石可以更轻松地与导轨集成

答案 22 :(得分:0)

我刚刚开始在我的rails 3项目中使用googlecharts。它很干净,似乎是唯一一个活着的谷歌可视化api基础宝石。其他人不活跃,大多使用旧的谷歌图表api(2007-2008某处发布)。

https://github.com/mattetti/googlecharts

答案 23 :(得分:0)

gem 'chart'可以轻松地将ChartJS和NVD3图表添加到rails。

答案 24 :(得分:0)

FusionCharts是非常好的图表产品。适用于RoR。他们的支持和论坛都很好。此产品的免费版本具有有限数量的图表和功能,但没有水印。

答案 25 :(得分:0)

如果你想要非常性感的图表,易于生成,并且你可以启用Flash,那么你一定要看看maani.us xml/swf charts

它背后有一些XML构建器,你已经准备好了。

答案 26 :(得分:0)

FWIW,我不喜欢在适合的时候使用谷歌图表。完成很重要。我发现特别是尺寸调整的变量是不可预测的 - 图表做了它自己的事情。

我还没有和Gruff / Bluff /等玩过,但是对于一个更高调的项目,我不会使用Google Charts。

答案 27 :(得分:0)

ChartDirector。丑陋的API,但良好的服务器端图像结果。自包含二进制文件。

答案 28 :(得分:0)

这不是专门的RoR,但是对于javascript来说它是Gruff非常漂亮的端口:http://bluff.jcoglan.com/

答案 29 :(得分:0)

我们这样做是通过向gnuplot外壳生成图表作为PNG服务器端。它有点老派,图表不是交互式的,但它可以工作并且可以缓存。

(我们这样做的另一个原因是我们可以在报告的PDF版本中放置完全相同的图表。)