SVG::Graph(3) Visualize your data in Scalable Vector Graphics (SVG) format.

SYNOPSIS


use SVG::Graph;
use SVG::Graph::Data;
use SVG::Graph::Data::Datum;
#create a new SVG document to plot in...
my $graph = SVG::Graph->new(width=>600,height=>600,margin=>30);
#and create a frame to hold the data/glyphs
my $frame = $graph->add_frame;
#let's plot y = x^2
my @data = map {SVG::Graph::Data::Datum->new(x=>$_,y=>$_^2)}
(1,2,3,4,5);
my $data = SVG::Graph::Data->new(data => \@data);
#put the xy data into the frame
$frame->add_data($data);
#add some glyphs to apply to the data in the frame
$frame->add_glyph('axis', #add an axis glyph
'x_absolute_ticks' => 1, #with ticks every one
#unit on the x axis
'y_absolute_ticks' => 1, #and ticks every one
#unit on the y axis
'stroke' => 'black', #draw the axis black
'stroke-width' => 2, #and 2px thick
);
$frame->add_glyph('scatter', #add a scatterplot glyph
'stroke' => 'red', #the dots will be outlined
#in red,
'fill' => 'red', #filled red,
'fill-opacity' => 0.5, #and 50% opaque
);
#print the graphic
print $graph->draw;

DESCRIPTION

SVG::Graph is a suite of perl modules for plotting data. SVG::Graph currently supports plots of one-, two- and three-dimensional data, as well as N-ary rooted trees. Data may be represented as:

 Glyph Name     Dimensionality supported
                1d      2d      3d      tree
 --------------------------------------------------------
 Axis                           x
 Bar Graph              x
 Bubble Plot                    x
 Heatmap Graph                  x
 Line Graph             x
 Pie Graph      x
 Scatter Plot           x
 Spline Graph           x
 Tree                                   x

SVG::Graph 0.02 is a pre-alpha release. Keep in mind that many of the glyphs are not very robust.

PLOTTING

You need to create a SVG::Graph::Frame instance from the parent SVG::Graph instance for each set of data to be plotted. Datasets can be hierarchical, and to represent this, SVG::Graph::Frame instances can themselves contain subframes. SVG::Graph::Frame can contain:

 - multiple subframes as instances of SVG::Graph::Frame
 - a single SVG::Graph::Data instance
 - multiple SVG::Graph::Glyph instances with which to render
   the attached SVG::Graph::Data instance, and all SVG::Graph::Data
   instances attached to SVG::Graph::Frame subinstances

See SVG::Graph::Frame and SVG::Graph::Glyph for details.

ONE DATA SET

 1. create an SVG::Graph instance
 2. create an SVG::Graph::Frame instance by calling
    SVG::Graph::add_frame();
 3. create an SVG::Graph::Data instance, containing
    an SVG::Graph::Data::Datum instance for each data point.
 4. Attach the SVG::Graph::Data instance to your SVG::Graph::Frame
    using SVG::Graph::Frame::add_data();
 5. Attach glyphs to the SVG::Graph::Frame instance using
    SVG::Graph::Frame::add_glyph();
 6. Call SVG::Graph::draw();

MULTIPLE DATA SETS

 1. create an SVG::Graph instance
 2. create an SVG::Graph::Frame instance by calling
    SVG::Graph::add_frame();
 3. create an SVG::Graph::Data instance, containing
    an SVG::Graph::Data::Datum instance for each data point.
 4. Attach the SVG::Graph::Data instance to your SVG::Graph::Frame
    using SVG::Graph::Frame::add_data();
 5. Attach glyphs to the SVG::Graph::Frame instance using
    SVG::Graph::Frame::add_glyph();
 6. repeat [2-5] for each additional data set to be added.
    add_frame() can be called on SVG::Graph to add top-level data
    sets, or SVG::Graph::Frame to add hierarchical data sets.
 7. Call SVG::Graph::draw();

FEEDBACK

Send an email to the svg-graph-developers list. For more info, visit the project page at http://www.sf.net/projects/svg-graph

AUTHORS

 Allen Day,      <[email protected]>
 Chris To,       <[email protected]>

CONTRIBUTORS

 James Chen,     <[email protected]>
 Brian O'Connor, <[email protected]>

METHODS

new

 Title   : new
 Usage   : my $graph = SVG::Graph->new(width=>600,
                                       height=>600,
                                       margin=>20);
 Function: creates a new SVG::Graph object
 Returns : a SVG::Graph object
 Args    : width => the width of the SVG 
           height => the height of the SVG
           margin => margin for the root frame

init

 Title   : init
 Usage   :
 Function:
 Example :
 Returns : 
 Args    :

width

 Title   : width
 Usage   : $obj->width($newval)
 Function: 
 Example : 
 Returns : value of width (a scalar)
 Args    : on set, new value (a scalar or undef, optional)

height

 Title   : height
 Usage   : $obj->height($newval)
 Function: 
 Example : 
 Returns : value of height (a scalar)
 Args    : on set, new value (a scalar or undef, optional)

margin

 Title   : margin
 Usage   : $obj->margin($newval)
 Function: 
 Example : 
 Returns : value of margin (a scalar)
 Args    : on set, new value (a scalar or undef, optional)

svg

 Title   : svg
 Usage   : $obj->svg($newval)
 Function: 
 Example : 
 Returns : value of svg (a scalar)
 Args    : on set, new value (a scalar or undef, optional)

add_frame

 Title   : add_frame
 Usage   : my $frame = $graph->add_frame
 Function: adds a Frame to the current Graph
 Returns : a SVG::Graph::Frame object
 Args    : a hash.  usable keys:
             frame_transform (optional)
               'top' default orientation
               'bottom' rotates graph 180 deg (about the center)
               'right' points top position towards right
               'left' points top position towards left

frames

 Title   : frames
 Usage   : get/set
 Function:
 Example :
 Returns : 
 Args    :

xoffset

 Title   : xoffset
 Usage   : $obj->xoffset($newval)
 Function: 
 Example : 
 Returns : value of xoffset (a scalar)
 Args    : on set, new value (a scalar or undef, optional)

yoffset

 Title   : yoffset
 Usage   : $obj->yoffset($newval)
 Function: 
 Example : 
 Returns : value of yoffset (a scalar)
 Args    : on set, new value (a scalar or undef, optional)

draw

 Title   : draw
 Usage   : $graph=>draw
 Function: depends on child glyph implementations 
 Returns : xmlifyied SVG object
 Args    : none