Class GoogleChart::Base
In: lib/google_chart/base.rb
Parent: Object

Methods

Constants

BASE_URL = "http://chart.apis.google.com/chart?"
SIMPLE_ENCODING = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'.split('');
COMPLEX_ENCODING_ALPHABET = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-.'.split('');
SHAPE_MARKERS = {:arrow => "a", :cross => "c", :diamond => "d", :circle => "o", :square => "s", :vline_segment => "v", :vline_full => "V", :hline_full => "h", :x => "x"
DEFAULT_LINE_STYLE = '1'

Attributes

chart_size  [RW]  Size of the chart in WIDTHxHEIGHT format
chart_title  [RW]  Chart title
chart_type  [RW]  Type of the chart. Usually, you do not need to set this yourself
data_encoding  [RW]  Data encoding to use. Can be one of :simple, :text or :extended (see code.google.com/apis/chart/#chart_data)
params  [RW]  A hash of the params used to construct the URL
show_legend  [RW]  Set to true or false to show or hide the chart legend. Not applicable for Scatter Chart.
title_color  [RW]  RRGGBB hex value for the color of the title
title_font_size  [RW]  Font size of the title

Public Class methods

Public Instance methods

Adds an axis to the graph. Not applicable for Pie Chart (GoogleChart::PieChart) or Venn Diagram (GoogleChart::VennDiagram)

type
is a symbol which can be one of :x, :y, :right, :top
options
is a hash containing the options (see below)

Options

Not all the options are mandatory.

:labels
An array containing the labels for the axis
:positions
An Array containing the positions for the labels
:range
An array containing 2 elements, the start value and end value

axis styling options have to be specified as follows

:color
Hexadecimal RGB value for the color to represent the data for the axis labels
:font_size
Font size of the labels in pixels
:alignment
can be one of :left, :center or :right

Examples

    lc.axis :y, :range => [0,6], :color => 'ff00ff', :font_size => 16, :alignment => :center

Adds the data to the chart, according to the type of the graph being generated.

name
is a string containing a label for the data.
value
is either a number or an array of numbers containing the data. Pie Charts and Venn Diagrams take a single number, but other graphs require an array of numbers
color (optional)
is a hexadecimal RGB value for the color to represent the data

Examples

for GoogleChart::LineChart (normal)

   lc.data "Trend 1", [1,2,3,4,5], 'ff00ff'

for GoogleChart::LineChart (XY chart)

   lc.data "Trend 2", [[4,5], [2,2], [1,1], [3,4]], 'ff00ff'

for GoogleChart::PieChart

   lc.data "Apples", 5, 'ff00ff'
   lc.data "Oranges", 7, '00ffff'

Adds a background or chart fill. Call this option twice if you want both a background and a chart fill

bg_or_c
Can be one of :background or :chart depending on the kind of fill requested
type
Can be one of :solid, :gradient or :stripes
options
: Options depend on the type of fill selected above

Options

For :solid type

  • A :color option which specifies the RGB hex value of the color to be used as a fill. For e.g lc.fill(:chart, :solid, {:color => ‘ffcccc’})

For :gradient type

  • An :angle, which is the angle of the gradient between 0(horizontal) and 90(vertical)
  • A :color option which is a 2D array containing the colors and an offset each, which specifies at what point the color is pure where: 0 specifies the right-most chart position and 1 the left-most. e,g lc.fill :background, :gradient, :angle => 0, :color => [[‘76A4FB’,1],[‘ffffff’,0]]

For :stripes type

  • An :angle, which is the angle of the stripe between 0(horizontal) and 90(vertical)
  • A :color option which is a 2D array containing the colors and width value each, which must be between 0 and 1 where 1 is the full width of the chart. for e.g lc.fill :chart, :stripes, :angle => 90, :color => [ [‘76A4FB’,0.2], [‘ffffff’,0.2] ]

Defines a Fill area. Applicable for line charts only

color
is the color of the fill area
start_index
is the index of the line at which the fill starts. This is 0 for the first data set, 1 for the second and so on.
end_index
is the index of the line at which the fill ends.

Examples

    # Fill Area (Multiple Datasets)
      lc = GoogleChart::LineChart.new('320x200', "Line Chart", false) do |lc|
      lc.show_legend = false
      lc.data "Trend 1", [5,5,6,5,5], 'ff0000'
      lc.data "Trend 2", [3,3,4,3,3], '00ff00'
      lc.data "Trend 3", [1,1,2,1,1], '0000ff'
      lc.data "Trend 4", [0,0,0,0,0], 'ffffff'
      lc.fill_area '0000ff',2,3
      lc.fill_area '00ff00',1,2
      lc.fill_area 'ff0000',0,1
    end
    puts "\nFill Area (Multiple Datasets)"
     puts lc.to_url

    # Fill Area (Single Dataset)
    lc = GoogleChart::LineChart.new('320x200', "Line Chart", false) do |lc|
      lc.show_legend = false
      lc.data "Trend 1", [5,5,6,5,5], 'ff0000'
      lc.fill_area 'cc6633', 0, 0
    end
    puts "\nFill Area (Single Dataset)"
    puts lc.to_url

Adds a grid to the graph. Applicable only for Line Chart (GoogleChart::LineChart) and Scatter Chart (GoogleChart::ScatterChart)

options
is a hash containing the options (see below)

Options

:xstep
X axis step size
:ystep
Y axis step size
:length_segment (optional)
Length of the line segement. Useful with the :length_blank value to have dashed lines
:length_blank (optional)
Length of the blank segment. use 0 if you want a solid grid

Examples

    lc.grid :x_step => 5, :y_step => 5, :length_segment => 1, :length_blank => 0

Allows (optional) setting of a max value for the chart, which will be used for data encoding and axis plotting. The value to pass depends on the type of chart

  • For Line Chart and Bar Charts it should be a single integer or float value
  • For Scatter Charts and Line XY Charts, you MUST pass an array containing the maximum values for X and Y

Examples

For bar charts

   bc.max_value 5 # 5 will be used to calculate the relative encoding values

For scatter chart

   sc.max_value [5,6] # 5 is the max x value and 6 is the max y value

Note : MAKE SURE you are passing the right values otherwise an exception will be raised

Defines a horizontal or vertical range marker. Applicable for line charts and vertical charts

alignment
can be :horizontal or :vertical
options
specifies the color, start point and end point

Options

:color
RRGGBB hex value for the color of the range marker
:start_point
position on the x-axis/y-axis at which the range starts where 0.00 is the left/bottom and 1.00 is the right/top
:end_point
position on the x-axis/y-axis at which the range ends where 0.00 is the left/bottom and 1.00 is the right/top

Examples

    lc.range_marker :horizontal, :color => 'E5ECF9', :start_point => 0.1, :end_point => 0.5
    lc.range_marker :vertical, :color => 'a0bae9', :start_point => 0.1, :end_point => 0.5

Defines a shape marker. Applicable for line charts and scatter plots

type
can be :arrow, :cross, :diamond, :circle, :square, :vline_segment, :vline_full, :hline_full, :x
options
specifies the color, data set index, data point index and size in pixels

Options

:color
RRGGBB hex value for the color of the range marker
:data_set_index
the index of the line on which to draw the marker. This is 0 for the first data set, 1 for the second and so on.
:data_point_index
is a floating point value that specifies on which data point of the data set the marker will be drawn. This is 0 for the first data point, 1 for the second and so on. Specify a fraction to interpolate a marker between two points.
:size
is the size of the marker in pixels.

Examples

    lcxy.shape_marker :circle, :color => "000000", :data_set_index => 1, :data_point_index => 2, :pixel_size => 10
    lcxy.shape_marker :cross, :color => "E5ECF9", :data_set_index => 0, :data_point_index => 0.5, :pixel_size => 10

Generates a fully encoded URL string that can be used to retrieve the graph image in PNG format. For less verbose URLs, use the to_url method. Use this only if you are doing further processing with the URLs, like passing the URL to a method for downloading the images

Use this after assigning all the properties to the graph You can pass in additional params as a hash for features that may not have been implemented For e.g

     lc = GoogleChart::LineChart.new('320x200', "Line Chart", false)
     lc.data "Trend 1", [5,4,3,1,3,5,6], '0000ff'
     lc.data "Trend 2", [1,2,3,4,5,6], '00ff00'
     lc.data "Trend 3", [6,5,4,3,2,1], 'ff0000'
     puts lc.to_escaped_url({:chm => "000000,0,0.1,0.11"}) # Single black line as a horizontal marker

Generates the URL string that can be used to retrieve the graph image in PNG format. Use this after assigning all the properties to the graph You can pass in additional params as a hash for features that may not have been implemented For e.g

     lc = GoogleChart::LineChart.new('320x200', "Line Chart", false)
     lc.data "Trend 1", [5,4,3,1,3,5,6], '0000ff'
     lc.data "Trend 2", [1,2,3,4,5,6], '00ff00'
     lc.data "Trend 3", [6,5,4,3,2,1], 'ff0000'
     puts lc.to_url({:chm => "000000,0,0.1,0.11"}) # Single black line as a horizontal marker

Protected Instance methods

[Validate]