int main(int argc, char *argv[]) { // The data for the bar chart double data0[] = {100, 125, 156, 147, 87, 124, 178, 109, 140, 106, 192, 122}; double data1[] = {122, 156, 179, 211, 198, 177, 160, 220, 190, 188, 220, 270}; double data2[] = {167, 190, 213, 267, 250, 320, 212, 199, 245, 267, 240, 310}; const char *labels[] = {"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec"}; // Create a XYChart object of size 580 x 280 pixels XYChart *c = new XYChart(580, 280); // Add a title to the chart using 14 pts Arial Bold Italic font c->addTitle("Product Revenue For Last 3 Years", "arialbi.ttf", 14); // Set the plot area at (50, 50) and of size 500 x 200. Use two alternative // background colors (f8f8f8 and ffffff) c->setPlotArea(50, 50, 500, 200, 0xf8f8f8, 0xffffff); // Add a legend box at (50, 25) using horizontal layout. Use 8pts Arial as font, // with transparent background. c->addLegend(50, 25, false, "arial.ttf", 8)->setBackground(Chart::Transparent); // Set the x axis labels c->xAxis()->setLabels(StringArray(labels, sizeof(labels)/sizeof(labels[0]))); // Draw the ticks between label positions (instead of at label positions) c->xAxis()->setTickOffset(0.5); // Add a multi-bar layer with 3 data sets BarLayer *layer = c->addBarLayer(Chart::Side); layer->addDataSet(DoubleArray(data0, sizeof(data0)/sizeof(data0[0])), 0xff8080, "Year 2003"); layer->addDataSet(DoubleArray(data1, sizeof(data1)/sizeof(data1[0])), 0x80ff80, "Year 2004"); layer->addDataSet(DoubleArray(data2, sizeof(data2)/sizeof(data2[0])), 0x8080ff, "Year 2005"); // Set 50% overlap between bars layer->setOverlapRatio(0.5); // Add a title to the y-axis c->yAxis()->setTitle("Revenue (USD in millions)"); // output the chart c->makeChart("overlapbar.png"); //free up resources delete c; return 0; }
int main(int argc, char *argv[]) { // The data for the bar chart double data0[] = {100, 125, 245, 147, 67}; double data1[] = {85, 156, 179, 211, 123}; double data2[] = {97, 87, 56, 267, 157}; const char *labels[] = {"Mon", "Tue", "Wed", "Thu", "Fri"}; // Create a XYChart object of size 400 x 240 pixels XYChart *c = new XYChart(400, 240); // Add a title to the chart using 10 pt Arial font c->addTitle(" Average Weekday Network Load", "", 10); // Set the plot area at (50, 25) and of size 320 x 180. Use two alternative // background colors (0xffffc0 and 0xffffe0) c->setPlotArea(50, 25, 320, 180, 0xffffc0, 0xffffe0); // Add a legend box at (55, 18) using horizontal layout. Use 8 pt Arial font, // with transparent background c->addLegend(55, 18, false, "", 8)->setBackground(Chart::Transparent); // Add a title to the y-axis c->yAxis()->setTitle("Throughput (MBytes Per Hour)"); // Reserve 20 pixels at the top of the y-axis for the legend box c->yAxis()->setTopMargin(20); // Set the x axis labels c->xAxis()->setLabels(StringArray(labels, sizeof(labels)/sizeof(labels[0]))); // Add a multi-bar layer with 3 data sets and 3 pixels 3D depth BarLayer *layer = c->addBarLayer(Chart::Side, 3); layer->addDataSet(DoubleArray(data0, sizeof(data0)/sizeof(data0[0])), 0xff8080, "Server #1"); layer->addDataSet(DoubleArray(data1, sizeof(data1)/sizeof(data1[0])), 0x80ff80, "Server #2"); layer->addDataSet(DoubleArray(data2, sizeof(data2)/sizeof(data2[0])), 0x8080ff, "Server #3"); // output the chart c->makeChart("multibar.png"); //free up resources delete c; return 0; }
int main(int argc, char *argv[]) { // The data for the bar chart double data0[] = {100, 115, 165, 107, 67}; double data1[] = {85, 106, 129, 161, 123}; double data2[] = {67, 87, 86, 167, 157}; // The labels for the bar chart const char *labels[] = {"Mon", "Tue", "Wed", "Thu", "Fri"}; // Create a XYChart object of size 600 x 360 pixels XYChart *c = new XYChart(600, 360); // Set the plotarea at (70, 20) and of size 400 x 300 pixels, with transparent background and // border and light grey (0xcccccc) horizontal grid lines c->setPlotArea(70, 20, 400, 300, Chart::Transparent, -1, Chart::Transparent, 0xcccccc); // Add a legend box at (480, 20) using vertical layout and 12pt Arial font. Set background and // border to transparent and key icon border to the same as the fill color. LegendBox *b = c->addLegend(480, 20, true, "arial.ttf", 12); b->setBackground(Chart::Transparent, Chart::Transparent); b->setKeyBorder(Chart::SameAsMainColor); // Set the x and y axis stems to transparent and the label font to 12pt Arial c->xAxis()->setColors(Chart::Transparent); c->yAxis()->setColors(Chart::Transparent); c->xAxis()->setLabelStyle("arial.ttf", 12); c->yAxis()->setLabelStyle("arial.ttf", 12); // Add a stacked bar layer BarLayer *layer = c->addBarLayer(Chart::Stack); // Add the three data sets to the bar layer layer->addDataSet(DoubleArray(data0, (int)(sizeof(data0) / sizeof(data0[0]))), 0xaaccee, "Server # 1"); layer->addDataSet(DoubleArray(data1, (int)(sizeof(data1) / sizeof(data1[0]))), 0xbbdd88, "Server # 2"); layer->addDataSet(DoubleArray(data2, (int)(sizeof(data2) / sizeof(data2[0]))), 0xeeaa66, "Server # 3"); // Set the bar border to transparent layer->setBorderColor(Chart::Transparent); // Enable labelling for the entire bar and use 12pt Arial font layer->setAggregateLabelStyle("arial.ttf", 12); // Enable labelling for the bar segments and use 12pt Arial font with center alignment layer->setDataLabelStyle("arial.ttf", 10)->setAlignment(Chart::Center); // For a vertical stacked bar with positive data, the first data set is at the bottom. For the // legend box, by default, the first entry at the top. We can reverse the legend order to make // the legend box consistent with the stacked bar. layer->setLegendOrder(Chart::ReverseLegend); // Set the labels on the x axis. c->xAxis()->setLabels(StringArray(labels, (int)(sizeof(labels) / sizeof(labels[0])))); // For the automatic y-axis labels, set the minimum spacing to 40 pixels. c->yAxis()->setTickDensity(40); // Add a title to the y axis using dark grey (0x555555) 14pt Arial Bold font c->yAxis()->setTitle("Y-Axis Title Placeholder", "arialbd.ttf", 14, 0x555555); // Output the chart c->makeChart("stackedbar.png"); //free up resources delete c; return 0; }
int main(int argc, char *argv[]) { // The data for the bar chart double data0[] = {100, 125, 245, 147, 67}; double data1[] = {85, 156, 179, 211, 123}; double data2[] = {97, 87, 56, 267, 157}; const char *labels[] = {"Mon", "Tue", "Wed", "Thur", "Fri"}; // Create a XYChart object of size 540 x 375 pixels XYChart *c = new XYChart(540, 375); // Add a title to the chart using 18pt Times Bold Italic font c->addTitle("Average Weekly Network Load", "timesbi.ttf", 18); // Set the plotarea at (50, 55) and of 440 x 280 pixels in size. Use a vertical gradient color // from light red (ffdddd) to dark red (880000) as background. Set border and grid lines to // white (ffffff). c->setPlotArea(50, 55, 440, 280, c->linearGradientColor(0, 55, 0, 335, 0xffdddd, 0x880000), -1, 0xffffff, 0xffffff); // Add a legend box at (50, 25) using horizontal layout. Use 10pt Arial Bold as font, with // transparent background. c->addLegend(50, 25, false, "arialbd.ttf", 10)->setBackground(Chart::Transparent); // Set the x axis labels c->xAxis()->setLabels(StringArray(labels, (int)(sizeof(labels) / sizeof(labels[0])))); // Draw the ticks between label positions (instead of at label positions) c->xAxis()->setTickOffset(0.5); // Set axis label style to 8pt 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); // Add axis title c->yAxis()->setTitle("Throughput (MBytes Per Hour)"); // Add a multi-bar layer with 3 data sets and 4 pixels 3D depth BarLayer *layer = c->addBarLayer(Chart::Side, 4); layer->addDataSet(DoubleArray(data0, (int)(sizeof(data0) / sizeof(data0[0]))), 0xffff00, "Server #1"); layer->addDataSet(DoubleArray(data1, (int)(sizeof(data1) / sizeof(data1[0]))), 0x00ff00, "Server #2"); layer->addDataSet(DoubleArray(data2, (int)(sizeof(data2) / sizeof(data2[0]))), 0x9999ff, "Server #3"); // Set bar border to transparent. Use soft lighting effect with light direction from top. layer->setBorderColor(Chart::Transparent, Chart::softLighting(Chart::Top)); // Configure the bars within a group to touch each others (no gap) layer->setBarGap(0.2, Chart::TouchBar); // Output the chart c->makeChart("softmultibar.png"); //free up resources delete c; return 0; }
int main(int argc, char *argv[]) { // The data for the chart double data0[] = {100, 125, 245, 147, 67}; double data1[] = {85, 156, 179, 211, 123}; double data2[] = {97, 87, 56, 267, 157}; const char *labels[] = {"Mon Jun 4", "Tue Jun 5", "Wed Jun 6", "Thu Jun 7", "Fri Jun 8"}; // Create a XYChart object of size 540 x 350 pixels XYChart *c = new XYChart(540, 350); // Set the plot area to start at (120, 40) and of size 280 x 240 pixels c->setPlotArea(120, 40, 280, 240); // Add a title to the chart using 20pt Times Bold Italic (timesbi.ttf) font and using a deep // blue color (0x000080) c->addTitle("Weekly Server Load", "timesbi.ttf", 20, 0x000080); // Add a legend box at (420, 100) (right of plot area) using 12pt Times Bold font. Sets the // background of the legend box to light grey 0xd0d0d0 with a 1 pixel 3D border. c->addLegend(420, 100, true, "timesbd.ttf", 12)->setBackground(0xd0d0d0, 0xd0d0d0, 1); // Add a title to the y-axis using 12pt Arial Bold/deep blue (0x000080) font. Set the background // to yellow (0xffff00) with a 2 pixel 3D border. c->yAxis()->setTitle("Throughput (per hour)", "arialbd.ttf", 12, 0x000080)->setBackground( 0xffff00, 0xffff00, 2); // Use 10pt Arial Bold/orange (0xcc6600) font for the y axis labels c->yAxis()->setLabelStyle("arialbd.ttf", 10, 0xcc6600); // Set the axis label format to "nnn MBytes" c->yAxis()->setLabelFormat("{value} MBytes"); // Use 10pt Arial Bold/green (0x008000) font for the x axis labels. Set the label angle to 45 // degrees. c->xAxis()->setLabelStyle("arialbd.ttf", 10, 0x008000)->setFontAngle(45); // Set the labels on the x axis. c->xAxis()->setLabels(StringArray(labels, (int)(sizeof(labels) / sizeof(labels[0])))); // Add a 3D stack bar layer with a 3D depth of 5 pixels BarLayer *layer = c->addBarLayer(Chart::Stack, 5); // Use Arial Italic as the default data label font in the bars layer->setDataLabelStyle("ariali.ttf"); // Use 10pt Times Bold Italic (timesbi.ttf) as the aggregate label font. Set the background to // flesh (0xffcc66) color with a 1 pixel 3D border. layer->setAggregateLabelStyle("timesbi.ttf", 10)->setBackground(0xffcc66, Chart::Transparent, 1) ; // Add the first data set to the stacked bar layer layer->addDataSet(DoubleArray(data0, (int)(sizeof(data0) / sizeof(data0[0]))), -1, "Server #1"); // Add the second data set to the stacked bar layer layer->addDataSet(DoubleArray(data1, (int)(sizeof(data1) / sizeof(data1[0]))), -1, "Server #2"); // Add the third data set to the stacked bar layer, and set its data label font to Arial Bold // Italic. TextBox *textbox = layer->addDataSet(DoubleArray(data2, (int)(sizeof(data2) / sizeof(data2[0])) ), -1, "Server #3")->setDataLabelStyle("arialbi.ttf"); // Set the data label font color for the third data set to yellow (0xffff00) textbox->setFontColor(0xffff00); // Set the data label background color to the same color as the bar segment, with a 1 pixel 3D // border. textbox->setBackground(Chart::SameAsMainColor, Chart::Transparent, 1); // Output the chart c->makeChart("fontxy.png"); //free up resources delete c; return 0; }