views:

4065

answers:

22

I'd like to add some pie, bar and scatter charts to my Ruby on Rails web application. I want want them to be atractive, easy to add and not introduce much overhead.

What charting solution would you recommend?
What are its drawbacks (requires Javascript, Flash, expensive, etc)?

+4  A: 

Have you tried the Google Charts API? - web service APIs don't really come much simpler. It's free to use, simple to implement, and the charts don't look too shoddy.

David Heggie
+5  A: 

Open Flash Chart II is a free option that gives very nice output. It does, as you'd expect, require Flash.

Fusion Charts is even nicer, but is $499. In researching this, I found a cut-down free version that might serve your needs.

Clinton R. Nixon
+1  A: 

Google charts is very nice, but it's not a rails only solution. You simple use the programming language of your choice to dynamically produce urls that contain the data and google returns you back a nice image with your chart.

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

delux247
+26  A: 

Google Charts is an excellent choice if you don't want to use Flash. It's pretty easy to use on its own, but for Rails, it's even easier with the gchartrb gem. An example:

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
Clinton R. Nixon
I've decided to go with Google Charts and gchartrb to start with. It's simple and quick - I can move to something more sophisticated when I need to.
RichH
I've since found the Google Charts a bit of a pain as the pie labels often overflow the sides of the chart and they aren't they pretty. I'm moving to Google Visualizations which looks a lot nicer so far, but is Javascript based.
RichH
+9  A: 

I am a fan of Gruff Graphs, but Google Charts is also good if you don't mind relying on an external server.

lordscarlet
+2  A: 

I've just found ZiYa produces some really sexy charts and is Rails specific.

The downsides are it uses Flash and if you don't want the sites to link to XML/SWF page it costs $50 per site.

[I've not decided on it yet, but wanted to throw it out there in case people want to vote it up]

RichH
Gruff Graphs does not require flash, is rails specific, and is free.
lordscarlet
Also, it looks like ZiYa is just giving you easy methods to implement http://www.maani.us/xml_charts/index.php?menu=Gallery
lordscarlet
You're right lordscarlet ZiYa is just a RoR wrapper for the XML/SWF charts, but that could be quite useful. The license is for XML/SWF - you get ZiYa for free.
RichH
Good point. I have used XML/SWF and I like the functionality a lot. The upsides involve the flash functionality, but the downside is that it is flash. Images are a little more portable.
lordscarlet
A: 

We do this by shelling out to gnuplot to generate the charts as PNGs server-side. It's a bit old-school and the charts aren't interactive but it works and is cacheable.

(The other reason we do this is so we can put exactly the same chart in the PDF version of the report).

AndrewR
+1  A: 

In the old days, I decided to roll my own (using RVG/RMagick), mainly because Gruff didn't have everything I wanted. The downside was that finding and eliminating all the bugs in graphing code is a pain. These days Gruff is my choice as it's really gone forward in terms of customization and flexibility.

The standard Gruff templates/color choices suck though, so you'll need to get your hands dirty for best results.

Dan Harper - Leopard CRM
+6  A: 

If you don't need images, and can settle on requiring JavaScript, you could try a client-side solution like the jQuery plugin flot.

Ben
+2  A: 

I've used Fusion Charts extensively from within a Java web application, but it should work the same way from Rails since you're just embedding a Flash via HTML or JavaScript and passing it XML data. It's a slick package and their support has always been very responsive.

Brian Deterling
A: 

This isn't specifically RoR however, it is pretty slick port of Gruff to javascript: http://bluff.jcoglan.com/

Thanatos
+6  A: 

There's also Scruffy. I took a look at the code recently and it seemed easy to modify/extend. It produces svg and (by conversion) png.

MattW.
Oooo... SVG. I will have to check this out when I get to doing graphs again!
lordscarlet
A: 

ChartDirector. Ugly API, but good, server-side image results. Self contained binary.

Jordi Bunster
+1  A: 

You should take a look at Dmitry Baranovskiy's Javascript library called Raphaël.

Nathan de Vries
+3  A: 

It requires flash and isn't free (thought inexpensive), amcharts.

I've used it successfully and like it. I evaluated a number of options a while back and chose it. At the time, however, Google Charts wasn't as mature as it seems to be now. I would consider that first if I were to re-evaluate now.

Otto
A: 

FWIW, I'm not a fan of using Google Charts when fit & finish is important. I find that the variables for sizing, in particular, are unpredictable - the chart does its own thing.

I haven't yet played with Gruff/Bluff/etc., but for a higher-profile project I won't use Google Charts.

scottru
A: 

If you want quite sexy charts, easy to generate, and you can enable Flash, then you should definitely have a look at maani.us xml/swf charts.

Some XML builder behind it and you're ready to go.

Thibaut Barrère
The ZiYa wrapper I mentioned provides a Rails wrapper for xml/swf. Very cool looking charts.
RichH
A: 

Regarding amcharts, there's a "free" version with a very few restrictions that generates Flash charts including the 'chart by amCharts.com' mention.

And there's a nice plugin, ambling, that provides you with some helper methods to easily add charts to your views. Please note that amCharts.com reference documentation is still a must to tailor the chart to your requirements.

Laurent Farcy
+1  A: 

I 2nd the vote for flot. The latest version lets you do some animations and actions that I previously thought would only be possible via Flash. The documentation is fantastic. It simple to write by hand, but for simple cases it gets even easier with a Rails plugin called flotilla. You should check out the examples page for a better idea of what it's capable of. The zooming and hover capabilities are especially impressive.

Jerry Cheung
+2  A: 

The new Google Visualization appears to produce charts that are of more varied type, better looking and interactive than Google Graphs.

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

RichH
A: 

FusionCharts is a very good charting product. Works well with RoR. Their support and forums are good. The free version of this product has limited number of charts and features, but no watermark.

Srividya Sharma
+1  A: 

GoogleCharts and Gruff charts are great, but sometimes they lack some features that I need for more scientific plotting. There is a gem for gnuplot which may be helpful for some of these situations.

http://rgplot.rubyforge.org/

Bryan Ward