ChartDirector Ver 3.0 (C++ Edition)

Multi Radar Chart




This example demonstrates a radar chart with two layers and a number of chart formatting effects.

Source Code Listing

[The following project is available in "cppdemo/multiradar".]
#include "chartdir.h" int main(int argc, char *argv[]) { //The data for the chart double data0[] = {90, 60, 85, 75, 55}; double data1[] = {60, 80, 70, 80, 85}; //The labels for the chart const char *labels[] = {"Speed", "Reliability", "Comfort", "Safety", "Efficiency"}; //Create a PolarChart object of size 480 x 380 pixels PolarChart *c = new PolarChart(480, 380); //Set background color to gold (goldGradient), with 1 pixel 3D border effect c->setBackground(c->gradientColor(goldGradient, 90, 2), Transparent, 1); //Add a title to the chart using 12 pts Arial Bold Italic font. The title //text is white (0xffffff) on a black background c->addTitle("Space Travel Vehicles Compared", "arialbi.ttf", 12, 0xffffff )->setBackground(0x0); //Set center of plot area at (240, 210) with radius 150 pixels c->setPlotArea(240, 210, 150); //Add a legend box at (5, 30) using 10 pts Arial Bold font. Set the //background to silver (silverGradient), with a black border, and 1 pixel 3D //border effect. c->addLegend(5, 30, true, "arialbd.ttf", 10)->setBackground( c->gradientColor(silverGradient, 90, 0.5), 1, 1); //Add an area layer to the chart using semi-transparent blue (0x806666cc). //Add a blue (0x6666cc) line layer using the same data with 3 pixel line //width to highlight the border of the area. c->addAreaLayer(DoubleArray(data0, sizeof(data0)/sizeof(*data0)), 0x806666cc, "Ultra Speed"); c->addLineLayer(DoubleArray(data0, sizeof(data0)/sizeof(*data0)), 0x6666cc )->setLineWidth(3); //Add an area layer to the chart using semi-transparent red (0x80cc6666). //Add a red (0xcc6666) line layer using the same data with 3 pixel line //width to highlight the border of the area. c->addAreaLayer(DoubleArray(data1, sizeof(data1)/sizeof(*data1)), 0x80cc6666, "Super Economy"); c->addLineLayer(DoubleArray(data1, sizeof(data1)/sizeof(*data1)), 0xcc6666 )->setLineWidth(3); //Set the labels to the angular axis as spokes. c->angularAxis()->setLabels(StringArray(labels, sizeof(labels)/sizeof(*labels))); //output the chart c->makeChart("multiradar.png"); //free up resources delete c; return 0; }