ChartDirector 6.0 (Perl Edition)

3D Scatter Groups




This example demonstrates multiple symbol groups by calling ThreeDScatterChart.addScatterGroup multiple times with different data and colors.

Source Code Listing

[Standalone Version] perldemo\threedscattergroups.pl
#!/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;

# The random XYZ data for the first 3D scatter group
my $r0 = new RanSeries(7);
my $xData0 = $r0->getSeries2(100, 100, -10, 10);
my $yData0 = $r0->getSeries2(100, 0, 0, 20);
my $zData0 = $r0->getSeries2(100, 100, -10, 10);

# The random XYZ data for the second 3D scatter group
my $r1 = new RanSeries(4);
my $xData1 = $r1->getSeries2(100, 100, -10, 10);
my $yData1 = $r1->getSeries2(100, 0, 0, 20);
my $zData1 = $r1->getSeries2(100, 100, -10, 10);

# The random XYZ data for the third 3D scatter group
my $r2 = new RanSeries(8);
my $xData2 = $r2->getSeries2(100, 100, -10, 10);
my $yData2 = $r2->getSeries2(100, 0, 0, 20);
my $zData2 = $r2->getSeries2(100, 100, -10, 10);

# Create a ThreeDScatterChart object of size 800 x 520 pixels
my $c = new ThreeDScatterChart(800, 520);

# Add a title to the chart using 20 points Times New Roman Italic font
$c->addTitle("3D Scatter Groups                    ", "timesi.ttf", 20);

# Set the center of the plot region at (350, 240), and set width x depth x height to 360 x 360 x 270
# pixels
$c->setPlotRegion(350, 240, 360, 360, 270);

# Set the elevation and rotation angles to 15 and 30 degrees
$c->setViewAngle(15, 30);

# Add a legend box at (640, 180)
$c->addLegend(640, 180);

# Add 3 scatter groups to the chart with 9 pixels glass sphere symbols of red (ff0000), green
# (00ff00) and blue (0000ff) colors
$c->addScatterGroup($xData0, $yData0, $zData0, "Alpha", $perlchartdir::GlassSphere2Shape, 9,
    0xff0000);
$c->addScatterGroup($xData1, $yData1, $zData1, "Beta", $perlchartdir::GlassSphere2Shape, 9, 0x00ff00
    );
$c->addScatterGroup($xData2, $yData2, $zData2, "Gamma", $perlchartdir::GlassSphere2Shape, 9,
    0x0000ff);

# Set the x, y and z axis titles
$c->xAxis()->setTitle("X-Axis Place Holder");
$c->yAxis()->setTitle("Y-Axis Place Holder");
$c->zAxis()->setTitle("Z-Axis Place Holder");

# Output the chart
$c->makeChart("threedscattergroups.png")

[CGI Version] perldemo_cgi\threedscattergroups.pl
#!/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;

# The random XYZ data for the first 3D scatter group
my $r0 = new RanSeries(7);
my $xData0 = $r0->getSeries2(100, 100, -10, 10);
my $yData0 = $r0->getSeries2(100, 0, 0, 20);
my $zData0 = $r0->getSeries2(100, 100, -10, 10);

# The random XYZ data for the second 3D scatter group
my $r1 = new RanSeries(4);
my $xData1 = $r1->getSeries2(100, 100, -10, 10);
my $yData1 = $r1->getSeries2(100, 0, 0, 20);
my $zData1 = $r1->getSeries2(100, 100, -10, 10);

# The random XYZ data for the third 3D scatter group
my $r2 = new RanSeries(8);
my $xData2 = $r2->getSeries2(100, 100, -10, 10);
my $yData2 = $r2->getSeries2(100, 0, 0, 20);
my $zData2 = $r2->getSeries2(100, 100, -10, 10);

# Create a ThreeDScatterChart object of size 800 x 520 pixels
my $c = new ThreeDScatterChart(800, 520);

# Add a title to the chart using 20 points Times New Roman Italic font
$c->addTitle("3D Scatter Groups                    ", "timesi.ttf", 20);

# Set the center of the plot region at (350, 240), and set width x depth x height to 360 x 360 x 270
# pixels
$c->setPlotRegion(350, 240, 360, 360, 270);

# Set the elevation and rotation angles to 15 and 30 degrees
$c->setViewAngle(15, 30);

# Add a legend box at (640, 180)
$c->addLegend(640, 180);

# Add 3 scatter groups to the chart with 9 pixels glass sphere symbols of red (ff0000), green
# (00ff00) and blue (0000ff) colors
$c->addScatterGroup($xData0, $yData0, $zData0, "Alpha", $perlchartdir::GlassSphere2Shape, 9,
    0xff0000);
$c->addScatterGroup($xData1, $yData1, $zData1, "Beta", $perlchartdir::GlassSphere2Shape, 9, 0x00ff00
    );
$c->addScatterGroup($xData2, $yData2, $zData2, "Gamma", $perlchartdir::GlassSphere2Shape, 9,
    0x0000ff);

# Set the x, y and z axis titles
$c->xAxis()->setTitle("X-Axis Place Holder");
$c->yAxis()->setTitle("Y-Axis Place Holder");
$c->zAxis()->setTitle("Z-Axis Place Holder");

# Output the chart
binmode(STDOUT);
print "Content-type: image/png\n\n";
print $c->makeChart2($perlchartdir::PNG);