NAME
SVG::Graph - 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/glyphsmy $frame = $graph->add_frame;#let's plot y = x^2my @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 graphicprint $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 supported1d 2d 3d tree--------------------------------------------------------Axis xBar Graph xBubble Plot xHeatmap Graph xLine Graph xPie Graph xScatter Plot xSpline Graph xTree 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 renderthe attached SVG::Graph::Data instance, and all SVG::Graph::Datainstances attached to SVG::Graph::Frame subinstances
See SVG::Graph::Frame and SVG::Graph::Glyph for details.
ONE DATA SET
1. create an SVG::Graph instance2. create an SVG::Graph::Frame instance by callingSVG::Graph::add_frame();3. create an SVG::Graph::Data instance, containingan SVG::Graph::Data::Datum instance for each data point.4. Attach the SVG::Graph::Data instance to your SVG::Graph::Frameusing SVG::Graph::Frame::add_data();5. Attach glyphs to the SVG::Graph::Frame instance usingSVG::Graph::Frame::add_glyph();6. Call SVG::Graph::draw();
MULTIPLE DATA SETS
1. create an SVG::Graph instance2. create an SVG::Graph::Frame instance by callingSVG::Graph::add_frame();3. create an SVG::Graph::Data instance, containingan SVG::Graph::Data::Datum instance for each data point.4. Attach the SVG::Graph::Data instance to your SVG::Graph::Frameusing SVG::Graph::Frame::add_data();5. Attach glyphs to the SVG::Graph::Frame instance usingSVG::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 datasets, 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]>
SEE ALSO
SVG
METHODS
new
Title : newUsage : my $graph = SVG::Graph->new(width=>600,height=>600,margin=>20);Function: creates a new SVG::Graph objectReturns : a SVG::Graph objectArgs : width => the width of the SVGheight => the height of the SVGmargin => margin for the root frame
init
Title : initUsage :Function:Example :Returns :Args :
width
Title : widthUsage : $obj->width($newval)Function:Example :Returns : value of width (a scalar)Args : on set, new value (a scalar or undef, optional)
height
Title : heightUsage : $obj->height($newval)Function:Example :Returns : value of height (a scalar)Args : on set, new value (a scalar or undef, optional)
margin
Title : marginUsage : $obj->margin($newval)Function:Example :Returns : value of margin (a scalar)Args : on set, new value (a scalar or undef, optional)
svg
Title : svgUsage : $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_frameUsage : my $frame = $graph->add_frameFunction: adds a Frame to the current GraphReturns : a SVG::Graph::Frame objectArgs : 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 : framesUsage : get/setFunction:Example :Returns :Args :
xoffset
Title : xoffsetUsage : $obj->xoffset($newval)Function:Example :Returns : value of xoffset (a scalar)Args : on set, new value (a scalar or undef, optional)
yoffset
Title : yoffsetUsage : $obj->yoffset($newval)Function:Example :Returns : value of yoffset (a scalar)Args : on set, new value (a scalar or undef, optional)
draw
Title : drawUsage : $graph=>drawFunction: depends on child glyph implementationsReturns : xmlifyied SVG objectArgs : none