PHPExcel饼图标签和图例

时间:2012-09-04 12:19:26

标签: charts phpexcel pie-chart

我的库PHPExcel(1.7.7)存在问题:当我想创建饼图时,不会显示标签和图例。但是,对于其他图形,我没有那个问题。你有什么解决方案吗?

感谢。

以下是使用的代码:

$categories = array(
new PHPExcel_Chart_DataSeriesValues('String', 'RECAPITULATIF!$B$6:$B$8', null, 3),
    );

$values = array(
new PHPExcel_Chart_DataSeriesValues('Number',  'RECAPITULATIF!$F$6:$F$8', null, 3),
);

$series = new PHPExcel_Chart_DataSeries(
    PHPExcel_Chart_DataSeries::TYPE_PIECHART,       // plotType
    PHPExcel_Chart_DataSeries::GROUPING_CLUSTERED,  // plotGrouping
    array(0),                                       // plotOrder
    null,                                           // plotLabel
    $categories,                                    // plotCategory
    $values                                         // plotValues
    );

$plotarea = new PHPExcel_Chart_PlotArea(null, array($series));
$title = new PHPExcel_Chart_Title('Pie chart');
$legend = new PHPExcel_Chart_Legend(PHPExcel_Chart_Legend::POSITION_RIGHT, null, false);

$chart = new PHPExcel_Chart(
    'chart2',                                       // name
    $title,                                         // title
    $legend,                                        // legend
    $plotarea,                                      // plotArea
    true,                                           // plotVisibleOnly
    0,                                              // displayBlanksAs
    null,                                           // xAxisLabel
    null                                            // yAxisLabel
    );

3 个答案:

答案 0 :(得分:5)

我们必须通过声明setShowVal(TRUE)来启用数据标签。

找到我应用的以下代码

$series = new PHPExcel_Chart_DataSeries(
PHPExcel_Chart_DataSeries::TYPE_BARCHART,       // plotType
PHPExcel_Chart_DataSeries::GROUPING_CLUSTERED,  // plotGrouping
array(0, 1),                                    // plotOrder
$labels,                                        // plotLabel
$categories,                                    // plotCategory
$values                                         // plotValues
);

$layout1 = new PHPExcel_Chart_Layout();
$layout1->setShowVal(TRUE);      // Initializing the data labels with Values
$layout1->setShowPercent(TRUE);  // Initializing the data labels with Percentages

需要声明应用的绘图区域

$series->setPlotDirection(PHPExcel_Chart_DataSeries::DIRECTION_COL);
$plotarea = new PHPExcel_Chart_PlotArea($layout1, array($series));
$legend = new PHPExcel_Chart_Legend(PHPExcel_Chart_Legend::POSITION_RIGHT, null, false);
$chart = new PHPExcel_Chart(
        'chart1',                                       // name
        null,                                           // title
        $legend,                                        // legend
        $plotarea,                                      // plotArea
        true,                                           // plotVisibleOnly
        0,                                              // displayBlanksAs
        null,                                           // xAxisLabel
        null                                            // yAxisLabel
);

答案 1 :(得分:2)

你是不是因为忘记设置xAxisLabel和yAxisLabel而遇到这个问题?

尝试创建一个数组来获取你想要设置的标签,然后像你正在做的那样将它加载到这个数组中,但是设置plotLabel。 例如:对于标签:

$labels = array(
    new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$B$1', null, 1),
    new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$C$1', null, 1),
);

$series = new PHPExcel_Chart_DataSeries(
PHPExcel_Chart_DataSeries::TYPE_PIECHART,       // plotType
PHPExcel_Chart_DataSeries::GROUPING_CLUSTERED,  // plotGrouping
array(0),                                       // plotOrder
$labels,                                           // plotLabel <----- u were setting null
$categories,                                    // plotCategory
$values                                         // plotValues
);

然后你可以这样做:

$xAxisLabel = new PHPExcel_Chart_Title('xAxisLabel');
$yAxisLabel = new PHPExcel_Chart_Title('yAxisLabel');

然后:

$chart = new PHPExcel_Chart(
'chart2',                                       // name
$title,                                         // title
$legend,                                        // legend
$plotarea,                                      // plotArea
true,                                           // plotVisibleOnly
0,                                              // displayBlanksAs
xAxisLabel,                                     // xAxisLabel
yAxisLabel                                      // yAxisLabel
);

答案 2 :(得分:2)

我知道它已经很晚了,但我认为应该在这里给出答案。 我使用的是PHPExcel 1.8.0版。我有同样的问题,我找到了解决方案。

要显示图例,您必须将plotGrouping选项设置为null

$series = new PHPExcel_Chart_DataSeries(
    PHPExcel_Chart_DataSeries::TYPE_PIECHART,       // plotType
    null,                                           // plotGrouping
    range(0, count($values)-1),                     // plotOrder
    $labels,                                        // plotLabel
    $categories,                                    // plotCategory
    $values                                         // plotValues
);

要显示PieChart标签,您必须使用布局启用数据标签。

$layout = new PHPExcel_Chart_Layout();
$layout->setShowVal(TRUE);      
$plotarea = new PHPExcel_Chart_PlotArea(null, array($series));