ChartDirector Ver 5.0 (PHP Edition)

Soft Bar Shading

This example demonstrates using soft lighting effect for bars and gradient color for plot area background. It also demonstrates putting axis ticks in between axis labels, as opposed to at the axis labels.
Soft lighting is a special shading effect that look like gradient coloring. In this example, soft lighting effect is applied to the bars with the light coming from the left direction.

- The gradient plot area background is configured by using BaseChart.linearGradientColor to define the gradient color, then use XYChart.setPlotArea to apply it to the plot area.
- The XYChart.setPlotArea also sets the plot area border and grid line colors to white.
- The soft lighting effect of the bars is defined using softLighting, then applied to the bars using Layer.setBorderColor.
- The ticks in this example is offsetted by 0.5 units using Axis.setTickOffset. As a result, they are not center aligned with the axis labels, but are in between the labels.

See Soft Multi-Bar Chart for another example of soft lighting effect with the light coming from the top direction.

Source Code Listing

[File: phpdemo/softlightbar.php]

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

    # The data for the bar chart
    $data = array(450, 560, 630, 800, 1100, 1350, 1600, 1950, 2300, 2700);

    # The labels for the bar chart
    $labels = array("1996", "1997", "1998", "1999", "2000", "2001", "2002", "2003",
        "2004", "2005");

    # Create a XYChart object of size 600 x 360 pixels
    $c = new XYChart(600, 360);

    # Add a title to the chart using 18pts Times Bold Italic font
    $c->addTitle("Annual Revenue for Star Tech", "timesbi.ttf", 18);

    # Set the plotarea at (60, 40) and of size 500 x 280 pixels. Use a vertical gradient
    # color from light blue (eeeeff) to deep blue (0000cc) as background. Set border and
    # grid lines to white (ffffff).
    $c->setPlotArea(60, 40, 500, 280, $c->linearGradientColor(60, 40, 60, 280, 0xeeeeff,
        0x0000cc), -1, 0xffffff, 0xffffff);

    # Add a multi-color bar chart layer using the supplied data. Use soft lighting effect
    # with light direction from left.
    $barLayerObj = $c->addBarLayer3($data);
    $barLayerObj->setBorderColor(Transparent, softLighting(Left));

    # Set x axis labels using the given labels
    $c->xAxis->setLabels($labels);

    # Draw the ticks between label positions (instead of at label positions)
    $c->xAxis->setTickOffset(0.5);

    # Add a title to the y axis with 10pts Arial Bold font
    $c->yAxis->setTitle("USD (millions)", "arialbd.ttf", 10);

    # Set axis label style to 8pts Arial Bold
    $c->xAxis->setLabelStyle("arialbd.ttf", 8);
    $c->yAxis->setLabelStyle("arialbd.ttf", 8);

    # Set axis line width to 2 pixels
    $c->xAxis->setWidth(2);
    $c->yAxis->setWidth(2);

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

© 2009 Advanced Software Engineering Limited. All rights reserved.