Imager::Plot::Axis - Axis handling of Imager::Plot.
use Imager;
use Imager::Plot::Axis;
# Create our dummy data
@X = 0..10;
@Y = map { $_**3 } @X;
# Create Axis object
$Axis = Imager::Plot::Axis->new(Width => 200, Height => 180, GlobalFont=>"ImUgly.ttf");
$Axis->AddDataSet(X => \@X, Y => \@Y);
$Axis->{XgridShow} = 1; # Xgrid enabled
$Axis->{YgridShow} = 0; # Ygrid disabled
$Axis->{Border} = "lrb"; # left right and bottom edges
# See Imager::Color manpage for color specification
$Axis->{BackGround} = "#cccccc";
# Override the default function that chooses the x range
# of the graph, similar exists for y range
$Axis->{make_xrange} = sub {
$self = shift;
my $min = $self->{XDRANGE}->[0]-1;
my $max = $self->{XDRANGE}->[1]+1;
$self->{XRANGE} = [$min, $max];
};
$img = Imager->new(xsize=>600, ysize => 400);
$img->box(filled=>1, color=>"white");
$Axis->Render(Xoff=>50, Yoff=>370, Image=>$img);
$img->write(file=>"foo.ppm") or die $img->errstr;
This part of Imager::Plot takes care of managing the graph area itself. It
handles the grid, tickmarks, background in axis area and the data sets of
course. All the data sets have to be given to the Axis object before rendering
it so that everything is only written only once and scaling of axis can be
done automatically. This also helps in doing chartjunk tricks like shadows.
The size of the Axis area is controlled by the Width and Height
parameters of the "new" method. The border
region/frame of the axis is considered to lie in the coordinate system. The
default order of drawing is the following: Background image, grid, frame,
ticks.
Note that the Axis currently renders the ticklabels. This might
change in the near future.
Arnar M. Hrafnkelsson, addi@umich.edu