#!/usr/bin/perl
# In the sample code, the ChartDirector for Perl module is assumed to be in "../lib"
use File::Basename;
use lib (dirname($0)."/../lib") =~ /(.*)/;
use perlchartdir;
sub createChart
{
my $chartIndex = shift;
# The x and y coordinates of the grid
my $dataX = [-4, -3, -2, -1, 0, 1, 2, 3, 4];
my $dataY = [-4, -3, -2, -1, 0, 1, 2, 3, 4];
# Use random numbers for the z values on the XY grid
my $r = new RanSeries(99);
my $dataZ = $r->get2DSeries(scalar(@$dataX), scalar(@$dataY), -0.9, 0.9);
# Create a XYChart object of size 420 x 360 pixels
my $c = new XYChart(420, 360);
# Set the plotarea at (30, 25) and of size 300 x 300 pixels. Use semi-transparent grey
# (0xdd000000) horizontal and vertical grid lines
$c->setPlotArea(30, 25, 300, 300, -1, -1, -1, 0xdd000000, -1);
# Set the x-axis and y-axis scale
$c->xAxis()->setLinearScale(-4, 4, 1);
$c->yAxis()->setLinearScale(-4, 4, 1);
# Add a contour layer using the given data
my $layer = $c->addContourLayer($dataX, $dataY, $dataZ);
# Move the grid lines in front of the contour layer
$c->getPlotArea()->moveGridBefore($layer);
# Add a color axis (the legend) in which the top left corner is anchored at (350, 25). Set the
# length to 400 300 and the labels on the right side.
my $cAxis = $layer->setColorAxis(350, 25, $perlchartdir::TopLeft, 300, $perlchartdir::Right);
if ($chartIndex == 1) {
# Speicify a color gradient as a list of colors, and use it in the color axis.
my $colorGradient = [0x0044cc, 0xffffff, 0x00aa00];
$cAxis->setColorGradient(0, $colorGradient);
} elsif ($chartIndex == 2) {
# Specify the color scale to use in the color axis
my $colorScale = [-1.0, 0x1a9850, -0.75, 0x66bd63, -0.5, 0xa6d96a, -0.25, 0xd9ef8b, 0,
0xfee08b, 0.25, 0xfdae61, 0.5, 0xf46d43, 0.75, 0xd73027, 1];
$cAxis->setColorScale($colorScale);
} elsif ($chartIndex == 3) {
# Specify the color scale to use in the color axis. Also specify an underflow color 0x66ccff
# (blue) for regions that fall below the lower axis limit.
my $colorScale = [0, 0xffff99, 0.2, 0x80cdc1, 0.4, 0x35978f, 0.6, 0x01665e, 0.8, 0x003c30, 1
];
$cAxis->setColorScale($colorScale, 0x66ccff);
}
# Output the chart
$c->makeChart("contourcolor$chartIndex.png")
}
createChart(0);
createChart(1);
createChart(2);
createChart(3); |