Project

svg-graph

0.05
There's a lot of open issues
No release in over a year
Gem version of SVG:::Graph. SVG:::Graph is a pure Ruby library for generating charts, which are a type of graph where the values of one axis are not scalar. SVG::Graph has a verry similar API to the Perl library SVG::TT::Graph, and the resulting charts also look the same. This isn't surprising, because SVG::Graph started as a loose port of SVG::TT::Graph, although the internal code no longer resembles the Perl original at all.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies
 Project Readme

SVG::Graph

Build Status Maintainability Test Coverage This project is using Percy.io for visual regression testing.

Description

This repo is the continuation of the original SVG::Graph library by Sean Russell. I'd like to thank Claudio Bustos for giving me permissions to continue publishing the gem under it's original name: svg-graph

Changelog

I'm maintaing in my free time, so I can't promise on any deadlines. Please notify me (via github messages or on the Issues section) if you find any bug.

Contribute

Pull requests are very welcome :-)

Usage

For a complete list of configuration options please have a look at the source - most important Graph.rb, also checkout the subclasses (Pie, Bar, etc.) as they might provide additional options.

You can require everything at once

require 'svggraph'

or only the individual parts you need

require 'SVG/Graph/Bar'
require 'SVG/Graph/Line'
...

In the following some examples to get you up to speed.

Bar

require 'SVG/Graph/Bar'

x_axis = ['1-10', '10-30', '30-50', '50-70', 'older']

options = {
  :width             => 640,
  :height            => 300,
  :stack             => :side,  # the stack option is valid for Bar graphs only
  :fields            => x_axis,
  :graph_title       => "kg per head and year chocolate consumption",
  :show_graph_title  => true,
  :show_x_title      => true,
  :x_title           => 'Age in years',
  :show_y_title      => true,
  :y_title           => 'kg/year',
  :y_title_location  => :end,
  :no_css            => true
}

male_data   = [2, 4, 6, 4, 2]
female_data = [1, 5, 4, 5, 2.7]

g = SVG::Graph::Bar.new(options)

g.add_data( {
    :data => female_data,
    :title => "Female"
  })
g.add_data( {
    :data => male_data,
    :title => "Male"
  })

# graph.burn            # this returns a full valid xml document containing the graph
# graph.burn_svg_only   # this only returns the <svg>...</svg> node
File.open('bar.svg', 'w') {|f| f.write(g.burn_svg_only)}

example bar graph

BarHorizontal

example bar_horizontal graph

ErrBar

example err_bar graph

Line

example line graph

Pie

example pie graph

Plot

example plot graph

Schedule

example schedule graph

TimeSeries

example timeseries graph

C3js

Source: C3js.rb

Link to Preview

Build

  • Test

bundle exec rake

  • Build gem:

gem build svg-graph.gemspec

  • Install:

gem install svg-graph-\<version>.gem

Percy.io integration

https://docs.percy.io/docs/travis-ci https://docs.percy.io/docs/snapshot-cli-command