Gruff Graphs
A library for making beautiful graphs.
Built on top of rmagick; see its web page for a list of the system-level prerequisites (ImageMagick etc) and how to install them.
Installation
Add this line to your application's Gemfile:
gem 'gruff'
And then execute:
$ bundle
Or install it yourself as:
$ gem install gruff
Font
Gruff uses Roboto font as default font which is licensed under the Apache License, Version 2.0.
Usage
require 'gruff'
g = Gruff::Line.new
g.title = 'Wow!  Look at this!'
g.labels = { 0 => '5/6', 1 => '5/15', 2 => '5/24', 3 => '5/30', 4 => '6/4',
             5 => '6/12', 6 => '6/21', 7 => '6/28' }
g.data :Jimmy, [25, 36, 86, 39, 25, 31, 79, 88]
g.data :Charles, [80, 54, 67, 54, 68, 70, 90, 95]
g.data :Julie, [22, 29, 35, 38, 36, 40, 46, 57]
g.data :Jane, [95, 95, 95, 90, 85, 80, 88, 100]
g.data :Philip, [90, 34, 23, 12, 78, 89, 98, 88]
g.data :Arthur, [5, 10, 13, 11, 6, 16, 22, 32]
g.write('exciting.png')
Examples
You can find many examples in the test directory along with their resulting charts in the expected directory.
Accumulator bar chart

Area chart

Bar chart

Bezier chart
In progress!

Bullet chart
In progress!

Dot chart

Line chart

LineXY chart

Net chart

Pie chart

Scatter chart

Side bar chart

Side stacked bar chart

Spider chart

Stacked area chart

Stacked bar chart

Histogram chart

Box chart

Candlestick

Bubble chart

Documentation
http://www.rubydoc.info/github/topfunky/gruff/frames
Supported Ruby Versions
- Ruby 3.0 or later
- JRuby 9.4.x or later
Development
- Build docker image - $ ./docker-build.sh
- Launch docker image - $ ./docker-launch.sh
- Run tests - $ bundle exec rake
If you have made changes that involve updating the expected image, you need to update the image with the following command after running tests.
$ bundle exec rake test:image:update
If you change the method, you need to update RBS signatures.
$ rake rbs:update
Contributing
Source
The source for this project is now kept at GitHub:
http://github.com/topfunky/gruff
- Fork it
- Create your feature branch (git checkout -b my-new-feature)
- Commit your changes (git commit -am 'Add some feature')
- Push to the branch (git push origin my-new-feature)
- Create new Pull Request