本文为你演示如何用Web图表控件ChartDirector绘制最基本的3D饼图,这个饼图带有标题,并且其中一块扇形分离了出来。
这是一个最基本的3D饼图样式:
基本步骤:
用BaseChart.addTitle为图表添加标题
用PieChart.set3D将饼图绘制为3D效果
用参数PieChart.setExplode将其中一块扇形分离出来
ChartDirector绘制3D饼图示例代码:
#include "chartdir.h"
int main(int argc, char *argv[])
{
// The data for the pie chart
double data[] = {25, 18, 15, 12, 8, 30, 35};
// The labels for the pie chart
const char *labels[] = {"Labor", "Licenses", "Taxes", "Legal", "Insurance",
"Facilities", "Production"};
// Create a PieChart object of size 360 x 300 pixels
PieChart *c = new PieChart(360, 300);
// Set the center of the pie at (180, 140) and the radius to 100 pixels
c->setPieSize(180, 140, 100);
// Add a title to the pie chart
c->addTitle("Project Cost Breakdown");
// Draw the pie in 3D
c->set3D();
// Set the pie data and the pie labels
c->setData(DoubleArray(data, (int)(sizeof(data) / sizeof(data[0]))), StringArray(
labels, (int)(sizeof(labels) / sizeof(labels[0]))));
// Explode the 1st sector (index = 0)
c->setExplode(0);
// Output the chart
c->makeChart("threedpie.png");
//free up resources
delete c;
return 0;
}
ChartDirector绘制多层3D饼图示例代码:有时候,为了让图表看起来更有层次感,可以将3D饼图的每一块扇形设置为不同的高度。基本的3D饼图是用PieChart.set3D将所有扇形设置为单一的3D深度,在本例中,我们用PieChart.set3D2将扇形的不同的高度以整数数组表示。
#include "chartdir.h"
int main(int argc, char *argv[])
{
// The data for the pie chart
double data[] = {72, 18, 15, 12};
// The labels for the pie chart
const char *labels[] = {"Labor", "Machinery", "Facilities", "Computers"};
// The depths for the sectors
double depths[] = {30, 20, 10, 10};
// Create a PieChart object of size 360 x 300 pixels, with a light blue (DDDDFF)
// background and a 1 pixel 3D border
PieChart *c = new PieChart(360, 300, 0xddddff, -1, 1);
// Set the center of the pie at (180, 175) and the radius to 100 pixels
c->setPieSize(180, 175, 100);
// Add a title box using 15 pts Times Bold Italic font and blue (AAAAFF) as
// background color
c->addTitle("Project Cost Breakdown", "timesbi.ttf", 15)->setBackground(0xaaaaff)
;
// Set the pie data and the pie labels
c->setData(DoubleArray(data, (int)(sizeof(data) / sizeof(data[0]))), StringArray(
labels, (int)(sizeof(labels) / sizeof(labels[0]))));
// Draw the pie in 3D with variable 3D depths
c->set3D(DoubleArray(depths, (int)(sizeof(depths) / sizeof(depths[0]))));
// Set the start angle to 225 degrees may improve layout when the depths of the
// sector are sorted in descending order, because it ensures the tallest sector
// is at the back.
c->setStartAngle(225);
// Output the chart
c->makeChart("multidepthpie.png");
//free up resources
delete c;
return 0;
}
转载于:https://blog.51cto.com/datavisual/1298628