ChartDirector Ver 4.1 (PHP Edition Edition)

Polar Scatter Chart

This example demonstrates how to create polar scatter charts. It also demonstrates using alternating background colors along the angular direction.
A polar scatter chart can be created as a polar line chart with data symbols. The line width is set to 0, so only the symbols can be seen. This will create the effects of a scatter chart.
The detail steps are:

- Create a polar line layer using PolarChart.addLineLayer.
- Enable data symbols for the line using PolarLayer.setDataSymbol (or PolarLayer.setDataSymbol2 or PolarLayer.setDataSymbol3 or PolarLayer.setDataSymbol4).
- Disable the line by setting its width to 0 using PolarLayer.setLineWidth.

Note that in this example, the polar plot area uses two alternating background colors along the angular direction. This is by using PolarChart.setPlotAreaBg.

Source Code Listing

[File: phpdemo/polarscatter.php]

    <?php
    require_once("../lib/phpchartdir.php");

    # The data for the chart
    $data0 = array(43, 89, 76, 64, 48, 18, 92, 68, 44, 79, 71, 85);
    $angles0 = array(45, 96, 169, 258, 15, 30, 330, 260, 60, 75, 110, 140);

    $data1 = array(50, 91, 26, 29, 80, 53, 62, 87, 19, 40);
    $angles1 = array(230, 210, 240, 310, 179, 250, 244, 199, 89, 160);

    $data2 = array(88, 65, 76, 49, 80, 53);
    $angles2 = array(340, 310, 340, 210, 30, 300);

    # The labels on the angular axis (spokes)
    $labels = array("North", "North\nEast", "East", "South\nEast", "South",
        "South\nWest", "West", "North\nWest");

    # Create a PolarChart object of size 460 x 460 pixels
    $c = new PolarChart(460, 460);

    # Add a title to the chart at the top left corner using 15pts Arial Bold Italic font
    $c->addTitle2(TopLeft, "<*underline=2*>Plants in Wonderland", "arialbi.ttf", 15);

    # Set center of plot area at (230, 240) with radius 180 pixels
    $c->setPlotArea(230, 240, 180);

    # Use alternative light grey/dark grey sector background color
    $c->setPlotAreaBg(0xdddddd, 0xeeeeee, false);

    # Set the grid style to circular grid
    $c->setGridStyle(false);

    # Add a legend box at the top right corner of the chart using 9 pts Arial Bold font
    $legendObj = $c->addLegend(459, 0, true, "arialbd.ttf", 9);
    $legendObj->setAlignment(TopRight);

    # Set angular axis as 0 - 360, either 8 spokes
    $angularAxisObj = $c->angularAxis();
    $angularAxisObj->setLinearScale2(0, 360, $labels);

    # Set the radial axis label format
    $radialAxisObj = $c->radialAxis();
    $radialAxisObj->setLabelFormat("{value} km");

    # Add a blue (0xff) polar line layer to the chart using (data0, angle0)
    $layer0 = $c->addLineLayer($data0, 0x0000ff, "Immortal Weed");
    $layer0->setAngles($angles0);

    $layer0->setLineWidth(0);
    $layer0->setDataSymbol(TriangleSymbol, 11);

    # Add a red (0xff0000) polar line layer to the chart using (data1, angles1)
    $layer1 = $c->addLineLayer($data1, 0xff0000, "Precious Flower");
    $layer1->setAngles($angles1);

    # Disable the line by setting its width to 0, so only the symbols are visible
    $layer1->setLineWidth(0);

    # Use a 11 pixel diamond data point symbol
    $layer1->setDataSymbol(DiamondSymbol, 11);

    # Add a green (0x00ff00) polar line layer to the chart using (data2, angles2)
    $layer2 = $c->addLineLayer($data2, 0x00ff00, "Magical Tree");
    $layer2->setAngles($angles2);

    # Disable the line by setting its width to 0, so only the symbols are visible
    $layer2->setLineWidth(0);

    # Use a 9 pixel square data point symbol
    $layer2->setDataSymbol(SquareSymbol, 9);

    # output the chart
    header("Content-type: image/png");
    print($c->makeChart2(PNG));
    ?>

© 2006 Advanced Software Engineering Limited. All rights reserved.