NAME
R::YapRI::Graph::Simple.pm A module to create simple graphs using R through R::YapRI::Base
SYNOPSIS
use R::YapRI::Base;
use R::YapRI::Data::Matrix;
use R::YapRI::Graph::Simple;
## Create rbase:
my $rbase = R::YapRI::Base->new();
## Create the data matrix
my $ymatrix = R::YapRI::Data::Matrix->new({
name => 'data1',
coln => 10,
rown => 2,
colnames => ['A1', 'A2', 'A3', 'A4', 'A5', 'A6', 'A7', 'A8', 'A9', 'A10'],
rownames => ['X', 'Y'],
data => [qw/ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 /],
});
## Create the graph with the graph arguments, a barplot with two series (rows)
## of data per group (cols).
my $rgraph = R::YapRI::Graph::Simple->new({
rbase => $rbase,
rdata => { height => $ymatrix },
grfile => "MyFile.bmp",
device => { bmp => { width => 600, height => 600 } },
sgraph => { barplot => { beside => 'TRUE',
main => 'MyTitle',
xlab => 'x_axis_label',
ylab => 'y_axis_label',
col => ["dark red", "dark blue"],
}
},
});
my $block = $rgraph->build_graph();
$rgraph->run_graph($block);
DESCRIPTION
This module is a wrapper of R::YapRI::Base to create simple graphs using R, with the following features:
1) It loads the data from Perl to R using R::YapRI::Data::Matrix.
2) It works with blocks, so it can define a block in the beginning of the module/script and use as base to add the data and the graph creation commands.
3) It runs the following R commands acording the different accessors: - device: bmp, jpeg, tiff, png, postscript or pdf. - grparam: par. - sgraph (high-level plotting commands): plot, pairs, hist, dotchart, barplot, pie or boxplot. - gritems (low-level plotting commands): points, lines, abline, polygon, legend, title and axis.
4) It uses two commands to create the file with the graph:
+ build_graph(), to write into the R::YapRI::Base block the R commands. + run_graph(), to executate the R commands from the block.
AUTHOR
Aureliano Bombarely <ab782@cornell.edu>
CLASS METHODS
The following class methods are implemented:
(*) CONSTRUCTORS:
constructor new
Usage: my $rgraph = R::YapRI::Graph->new($arguments_href);
Desc: Create a new R graph object
Ret: a R::YapRI::Graph object
Args: A hash reference with the following parameters:
rbase => A R::YapRI::Base object
rdata => A hash reference with key=R_obj_name,
value=R::YapRI::Data::Matrix object
grfile => A filename
device => A hash reference with: key='grDevice name'
value=HASHREF. with grDevice args.
grparam => a hash reference with: key='par'
value=HASHREF. with par values.
sgraph => A hash reference with: key='high-level plotting function'
value=HASHREF. with plotting args
gritems => An array ref. of hash references with:
key='R low-level plotting command'
val='hash ref. with args. for that command'
Side_Effects: Die if the argument used is not a hash or its values arent
right.
Example: ## Default method:
my $rih = R::YapRI::Graph->new();
(*) ACCESSORS:
get/set_rbase
Usage: my $rbase = $rgraph->get_rbase();
$rgraph->set_rbase($rbase);
Desc: Get or set the rbase (R::YapRI::Base object) accessor
Ret: Get: $rbase, a R::YapRI::Base object
Set: none
Args: Get: none
Set: $rbase, a R::YapRI::Base object
Side_Effects: Get: None
Set: Die if no rbase object is supplied or if it isnt a
R::YapRI::Base object
Example: my $rbase = $rgraph->get_rbase();
$rgraph->set_rbase($rbase);
get/set_grfile
Usage: my $grfile = $rgraph->get_grfile();
$rgraph->set_grfile($grfile);
Desc: Get or set the grfile accessor.
It always will overwrite the filename argument for grDevice.
Ret: Get: $grfile, a scalar, a filename
Set: none
Args: Get: none
Set: $grfile, a scalar, filename
Side_Effects: Get: None
Set: Die if no grfile is supplied
Overwrite filename for grDevice
Example: my $grfile = $rgraph->get_grfile();
$rgraph->set_grfile('myfile.bmp');
get/set_rdata
Usage: my $rdata_href = $rgraph->get_rdata();
$rgraph->set_rdata($rdata_href);
Desc: Get or set the rdata accessor
Ret: Get: $rdata_href, a hash ref. with key = R.obj.name,
value = R::YapRI::Data::Matrix
Set: none
Args: Get: none
Set: $rdata_href, a hash ref. with key = R.obj.name,
value = R::YapRI::Data::Matrix
Side_Effects: Get: None
Set: Die if arg. supplied is not a hash reference or it dont
have R::YapRI::Data::Matrix objects.
Example: my %rdata = %{$rgraph->get_rdata()};
$rgraph->set_rdata({ ra => R::YapRI::Data::Matrix->new() });
get/set_device
Usage: my $device_href = $rgraph->get_device();
$rgraph->set_device($device_href);
Desc: Get or set the device accessor.
Permited grDevices: bmp, tiff, jpeg, png, pdf, postscript
Ret: Get: $device_href, a hash ref. with key=R.grDevice (bmp, tiff...)
val=HASHREF with arguments
Set: none
Args: Get: none
Set: $device_href, a hash ref. with key=R.grDevice (bmp, tiff...)
val=HASHREF with arguments
Side_Effects: Get: None
Set: Die if no hash ref. is supplied.
Die if grDevice isnt a permited device.
Die if the hashref. arguments isnt a hashref.
filename argument always will be overwrite for grfile
accessor.
Example: my $device_href = $rgraph->get_device();
$rgraph->set_device({ tiff => {} });
get/set_grparams
Usage: my $grparams_href = $rgraph->get_grparams();
$rgraph->set_grparams($grparams_href);
Desc: Get or set the graphical parameter accessor.
Use help(par) at the R terminal for more info.
Ret: Get: $grparam_href, a hash reference (see below)
Set: none
Args: Get: none
Set: $grparam_href, a hash reference.
Side_Effects: Get: None
Set: Die if no graphical parameter argument is supplied.
(empty hashref. is permited)
Die if it isnt a hash reference
Die if it doesnt use a permited parameter
Example: my %grparams = %{$rgraph->get_grparam()};
$rgraph->set_grparams({ par => { cex => 0.5 } });
get/set_sgraph
Usage: my $sgraph_href = $rgraph->get_sgraph();
$rgraph->set_sgraph($sgraph_href);
Desc: Get or set the simple graph accessor.
Permited high-level plot commands are: plot, pairs, hist, dotchart,
barplot, pie and boxplot.
Ret: Get: $sgraph_href, a hashref. with key=high-level plot command.
val=HASHREF. with plot arguments.
Set: none
Args: Get: none
Set: $sgraph_href, a hashref. with key=high-level plot command.
val=HASHREF. with plot arguments.
Side_Effects: Get: None
Set: Die if no sgraph is supplied or if it isnt the permited
list.
Die if argument hashref. isnt a hashref.
Example: my $sgraph = $rgraph->get_sgraph();
$rgraph->set_sgraph({ barplot => { beside => 'TRUE' } } );
get/set_gritems
Usage: my $gritems_href = $rgraph->get_gritems();
$rgraph->set_gritems($gritems_href);
Desc: Get or set the graph items arguments (low-level plotting commands)
accessor.
Use help() with a concrete gritem at the R terminal for more info.
Ret: Get: $gritems, an array reference of hash references with
key=R low-level plotting function
val=args. for that low-level func.
Set: none
Args: Get: none
Set: $gritems, an array reference of hash references with:
key=R low-level plotting function
val=args. for that low-level func.
Side_Effects: Get: None
Set: Die if no gritem argument is supplied (empty hash ref.
can be supplied)
Die if it isnt a array reference.
Die if rbase arg. was set before.
Die if the argument used it is not in the argument
permited list.
Die if the arguments used for the low-level plotting
function are not in the permited arguments, get using
R::YapRI::Base::r_function_args function + additional func.
for specific cases (example: col.main or cex.sub for title)
Example: my %gritems = %{$rgraph->get_gritems()};
$rgraph->set_gritems([
{ points => { x => [2, 5], col => "red" },
{ legend => { x => 25,
y => 50,
leg => ["exp1", "exp2", "exp3"],
bg => "gray90" }
]);
is_device_enabled
Usage: my $enabled = $rgraph->is_device_enabled($device_name, $block)
Desc: Check if the graphic device is enabled for the current block
Ret: 1 for enabled, 0 for disabled
Args: $device_name, a R graphical device name
$block, a block name to check, for a concrete rbase object
Side_Effects: Die if no deice_name or block are supplied.
Die if the block supplied doesnt exists in the rbase object
Example: if ($rgraph->is_device_enabled('bmp', 'BMPE')) {
print "R Device is enabled\n";
}
_rbase_check
Usage: $rgraph->_rbase_check();
Desc: Check if Rbase was set. Die if isnt set.
Ret: $rbase, Rbase object.
Args: None
Side_Effects: None
Example: $rgraph->_rbase_check();
_block_check
Usage: my $block = $rgraph->_block_check($block);
Desc: Check if a block exists into rbase object.
Create a new block if doesnt exists with that name.
Create a new block with name 'GRAPH_BUILD_XXXX if block isnt defined
Ret: $block, a block name.
Args: None
Side_Effects: None
Example: my $block = $rgraph->_block_check($block);
_sgraph_check
Usage: my $sgraph = $rgraph->_sgraph_check();
Desc: Check if a sgraph exists (accessor isnt empty) into rgraph object.
Die if is empty.
Ret: $sgraph, sgraph name for high-level plotting function
Args: None
Side_Effects: If there are more than one sgraph, order them and return
the first one.
Example: my $sgraph = $rgraph->_sgraph_check();
_rdata_check
Usage: my $robj = $rgraph->_rdata_check($primary_data_R);
Desc: Check if rdata exists (accessor isnt empty) into rgraph object.
Die if is empty.
Ret: $robj, a R object name for primary data (data used by the graph)
Args: $primary_data_R, according the simple graph used, the name of the
default primary data (for example: 'x' for plot or 'height' for barplot)
$mincol, min. number of columns for this method.
$maxcol, max. number of columns for this method.
Side_Effects: If there are more than one rdata, it will try to match the
R object name with the primary graph data
Example: my $robj = $rgraph->_rdata_check('height', 1, undef);
_rdata_loader
Usage: $rgraph->_rdata_loader($block);
Desc: Check and load the rdata
Ret: None
Args: $block, a block name for rbase
Side_Effects: Die if no block is used.
Die if block doesnt exist in the current rbase
Add the input R data object to sgraph hashref. If the sgraph
args. are a hash ref. it will convert them in a array ref. to
keep the order, and it will delete the arg. that refer to the
input data.
Example: $rgraph->_rdata_loader($block);
build_graph
Usage: my $block = $rgraph->build_graph($block);
Desc: A function to build the graph and return the block name.
Ret: $block, the name of the block where all the commands have been printed
Args: $block, a base block to add all the commands to create the graph
Side_Effects: Die if some of the accessors are empty
Example: my $block = $rgraph->build_graph();
$rgraph->build_graph("GRAPHBLOCK1");
run_graph
Usage: my ($filegraph, $fileresults) = $rgraph->run_graph();
Desc: A wrapper function to use run_command over a concrete graph block
Ret: $filegraph, the name of the graph file
$fileresults, with the result of run all the R commans of this block
Args: None
Side_Effects: Die if some of the accessors are empty.
Return the filename for the graph from the grfile accessor
Example: my ($filegraph, $fileresults) = $rgraph->build_graph();