ChartDirector 7.0 (Perl Edition)
Wafer Map
Source Code Listing
#!/usr/bin/perl
# The ChartDirector for Perl module is assumed to be in "../lib"
use File::Basename;
use lib (dirname($0)."/../lib") =~ /(.*)/;
use perlchartdir;
# The diameter of the wafer
my $diameter = 20;
my $radius = $diameter / 2.0;
# The random data array are for a square grid of 20 x 20 cells
my $r = new RanSeries(2);
my $zData = $r->get2DSeries($diameter, $diameter, 0, 100);
# We remove cells that are outside the wafer circle by setting them to NoValue
for(my $i = 0; $i < scalar(@$zData); ++$i) {
my $x = $i % $diameter + 0.5;
my $y = ($i - $x) / $diameter + 0.5;
if (($x - $radius) * ($x - $radius) + ($y - $radius) * ($y - $radius) > $radius * $radius) {
$zData->[$i] = $perlchartdir::NoValue;
}
}
# Create an XYChart object of size 520 x 480 pixels.
my $c = new XYChart(520, 480);
# Add a title the chart with 15pt Arial Bold font
$c->addTitle("Wafer Map Demonstration", "Arial Bold", 15);
# Set the plotarea at (50, 40) and of size 400 x 400 pixels. Set the backgound and border to
# transparent. Set both horizontal and vertical grid lines to light grey. (0xdddddd)
my $p = $c->setPlotArea(50, 40, 400, 400, -1, -1, $perlchartdir::Transparent, 0xdddddd, 0xdddddd);
# Create a discrete heat map with 20 x 20 cells
my $layer = $c->addDiscreteHeatMapLayer($zData, $diameter);
# Set the x-axis scale. Use 8pt Arial Bold font. Set axis color to transparent, so only the labels
# visible. Set 0.5 offset to position the labels in between the grid lines.
$c->xAxis()->setLinearScale(0, $diameter, 1);
$c->xAxis()->setLabelStyle("Arial Bold", 8);
$c->xAxis()->setColors($perlchartdir::Transparent, $perlchartdir::TextColor);
$c->xAxis()->setLabelOffset(0.5);
# Set the y-axis scale. Use 8pt Arial Bold font. Set axis color to transparent, so only the labels
# visible. Set 0.5 offset to position the labels in between the grid lines.
$c->yAxis()->setLinearScale(0, $diameter, 1);
$c->yAxis()->setLabelStyle("Arial Bold", 8);
$c->yAxis()->setColors($perlchartdir::Transparent, $perlchartdir::TextColor);
$c->yAxis()->setLabelOffset(0.5);
# Position the color axis 20 pixels to the right of the plot area and of the same height as the plot
# area. Put the labels on the right side of the color axis. Use 8pt Arial Bold font for the labels.
my $cAxis = $layer->setColorAxis($p->getRightX() + 20, $p->getTopY(), $perlchartdir::TopLeft,
$p->getHeight(), $perlchartdir::Right);
$cAxis->setLabelStyle("Arial Bold", 8);
# Output the chart
$c->makeChart("wafermap.png");