NAME

GD::Graph::Cartesian - Make cartesian graph using GD package

SYNOPSIS

use GD::Graph::Cartesian;
my $obj=GD::Graph::Cartesian->new(height=>400, width=>800);
$obj->addPoint(50=>25);
$obj->addLine($x0=>$y0, $x1=>$y1);
$obj->addRectangle($x0=>$y0, $x1=>$y1);
$obj->addString($x=>$y, "Hello World!");
$obj->font(gdSmallFont);  #sets the current font from GD exports
$obj->color("blue");      #sets the current color from Graphics::ColorNames
$obj->color([0,0,0]);     #sets the current color [red,green,blue]
print $obj->draw;

DESCRIPTION

This is a wrapper around GD to place points and lines on a X/Y scater plot.

CONSTRUCTOR

new

The new() constructor.

my $obj = GD::Graph::Cartesian->new(                      #default values
                width=>640,                               #width in pixels
                height=>480,                              #height in pixels
                ticksx=>10,                               #number of major ticks
                ticksy=>10,                               #number of major ticks
                borderx=>2,                               #pixel border left and right
                bordery=>2,                               #pixel border top and bottom
                rgbfile=>"/usr/X11R6/lib/X11/rgb.txt"
                minx=>{auto},                             #data minx
                miny=>{auto},                             #data miny
                maxx=>{auto},                             #data maxx
                maxy=>{auto},                             #data maxy
                points=>[[$x,$y,$color],...],             #addPoint method
                lines=>[[$x0=>$y0,$x1=>$y1,$color],...]   #addLine method
                strings=>[[$x0=>$y0,'String',$color],...] #addString method
                    );

METHODS

addPoint

Method to add a point to the graph.

$obj->addPoint(50=>25);
$obj->addPoint(50=>25, [$r,$g,$b]);

addLine

Method to add a line to the graph.

$obj->addLine(50=>25, 75=>35);
$obj->addLine(50=>25, 75=>35, [$r,$g,$b]);

addString

Method to add a string to the graph.

$obj->addString(50=>25, 'String');
$obj->addString(50=>25, 'String', [$r,$g,$b]);
$obj->addString(50=>25, 'String', [$r,$g,$b], $font); #$font is a gdfont

addRectangle

$obj->addRectangle(50=>25, 75=>35);
$obj->addRectangle(50=>25, 75=>35, [$r,$g,$b]);

points

Returns the points array reference.

lines

Returns the lines array reference.

strings

Returns the strings array reference.

color

Method to set or return the current drawing color

my $colorobj=$obj->color("blue");     #if Graphics::ColorNames available
my $colorobj=$obj->color([77,82,68]); #rgb=>[decimal,decimal,decimal]
my $colorobj=$obj->color;

font

Method to set or return the current drawing font (only needed by the very few)

use GD qw(gdGiantFont gdLargeFont gdMediumBoldFont gdSmallFont gdTinyFont);
$obj->font(gdSmallFont); #the default
$obj->font;

draw

Method returns a PNG binary blob.

my $png_binary=$obj->draw;

minx

maxx

miny

maxy

_scalex

Method returns the parameter scaled to the pixels.

_scaley

Method returns the parameter scaled to the pixels.

_imgxy_xy

Method to convert xy to imgxy cordinates

TODO

I'd like to add this capability into Chart as a use base qw{Chart::Base}

BUGS

Try the author

LIMITS

There are many packages on CPAN that create graphs and plots from data. But, each one has it's own limitations. This is the research that I did so that hopefully you won't have to...

Similar CPAN Packages

Chart::Plot

This is the second best package that I could find on CPAN that supports scatter plots of X/Y data. However, it does not supports a zero based Y-axis for positive data. Otherwise this is a great package.

Chart

This is a great package for its support of legends, layouts and labels but it only support equally spaced x axis data.

GD::Graph

This is a great package for pie charts but for X/Y scatter plots it only supports equally spaced x axis data.

AUTHOR

Michael R. Davis qw/perl michaelrdavis com/

LICENSE

Copyright (c) 2009 Michael R. Davis (mrdvt92)

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

SEE ALSO

GD::Graph::Cartesian, GD, Chart::Plot, Chart, GD::Graph