/spark_pr

Pure Ruby sparklines.

Primary LanguageRubyOtherNOASSERTION

spark_pr is a Ruby class to generate sparkline graphs with PNG or ASCII output.

It only depends on zlib and generates PNGs with pure Ruby code.
The line-graph outputs antialised lines.

Example for PNG output:

File.open( 'test.png', 'wb' ) do |png|
  png << Spark.plot( [47, 43, 24, 47, 16, 28, 38, 57, 50, 76,
                      42, 20, 98, 34, 53,  1, 55, 74, 63, 38,
                      31, 98, 89],
                     :has_min => true, :has_max => true, 'has_last' => 'true',
                     'height' => '40', :step => 10, :normalize => 'logarithmic' )
end

Example ASCII output:

spark = Spark.new({:has_min => true, :has_max => true, :height => 14, :step => 4})
puts spark.smooth( [47, 43, 24, 47, 16, 28, 38, 57, 50, 76,
                    42,  1, 98, 34, 53, 97, 55, 74, 63, 38,
                    31, 98, 89] ).to_ascii

The PNG output can also be obtained in data: URI format convenient for web
use. If the Spark.data_uri is used, there is also a dependency on Base64,
which is a standard library just like Zlib

You can paste the output from:

Spark.data_uri( [47, 43, 24, 47, 16, 28, 38, 57, 50, 76,
                 42, 20, 98, 34, 53,  1, 55, 74, 63, 38,
                 31, 98, 89],
                :has_min => true, :has_max => true, 'has_last' => 'true',
                'height' => '40', :step => 10, :normalize => 'logarithmic' )

into your browser's address and see the PNG directly.

Class based usage:

spark = Spark.new(:has_min => true, :has_max => true, 'has_last' => 'true',
                  'height' => '40', :step => 10, :normalize => 'logarithmic' )
spark.smooth(data)

File.open( 'test.png', 'wb' ) do |png|
  png << spark.png
end

img_src = spark.data_uri


The SparkCanvas class can also be used for other drawing operations,
it provides drawing canvas with alpha blending and some primitive graphics
operations and PNG output in just about 100 lines of Ruby code.

Pure Ruby sparklines are released under the terms of the MIT-LICENSE.
See the included MIT-LICENSE file for details.