Chartify

The purpose of this gem is to capture data to create a chart, in an object, so that we can do the following things

  • Render javascript graph, (which can be chart library agnostic)
  • Create the chart data using ruby only (no js to render chart)
  • Export chart as image (Needed when you want to email a chart)
  • Configuration for chart colors

Note

The project is in progress. So please wait for the release.

The project is similar to chartkick. The reason I am planning to create another project is because it does not support to export charts in image.

Charts supported

  • Line chart
  • Bar chart
  • Pie chart

For generating image from the chart data we are using Gruff

Here are some sample code to generate graph object and render to web.

@chart = Chartify::Factory.build(:line) do |chart|
  chart.data = [{hours_remain: 100, estimated_hours_remain: 100, day: 3.days.ago.to_date},
                {hours_remain: 50, estimated_hours_remain: 45, day: 2.days.ago.to_date},
                {hours_remain: 5, estimated_hours_remain: 10, day: 1.days.ago.to_date}]
  chart.columns = {hours_remain: 'Hours remaining', estimated_hours_remain: 'Estimated hours remaining'}
  chart.label_column = :day
end

In the web page,

<div id="chart" style="width: 900px; height: 180px;"></div>
<%= @chart.render_chart('chart') %>

To export the chart as image,

@chart.to_blob

Now you can attach the blob to email or in the PDF file.

License

This project rocks and uses MIT-LICENSE.