2016-01-14 46 views
1

我想创建一个堆叠的条形图,如下图所示嵌入PowerPoint模板的幻灯片中。当我在下面运行我的脚本时,出现错误。openTBS/PHP - 如何创建堆叠条形图?

TinyButStrong错误OpenTBS插件:(ChartChangeSeries) 'chart3': 无法发现在图表 'chart3' 系列的系列3'。 过程正在结束,除非您将NoErr属性设置为true。

就我所见,我的系列清晰地与x轴的两个标签一起定义。

我在哪里出错了,我该如何解决这个错误?

Table Definition in Template

Stacked Bar Chart Sample Image

$ecdClosureStatus = getClosureChartData('ECD'); 
    $ChartNameOrNum = 'chart3'; // Title of the shape that embeds the chart 
    $ChartRef = 'chart3'; // Title of the shape that embeds the chart 
    $SeriesNameOrNum = 'Series 1'; 
    $NewLegend = "Closed On Time"; 
    $NewValues = array(


(int)$ecdClosureStatus['ClosedOnTime'], 
            0 
           ); 
$TBS->PlugIn(OPENTBS_CHART, $ChartNameOrNum, $SeriesNameOrNum, $NewValues, $NewLegend); 

$SeriesNameOrNum = 'Series 2'; 
$NewLegend = 'Closed 1-30 Days Late'; 
$NewValues = array(
            0, 
            (int)$ecdClosureStatus['OneToThirtyDaysLate'] 
           ); 
$TBS->PlugIn(OPENTBS_CHART, $ChartNameOrNum, $SeriesNameOrNum, $NewValues, $NewLegend); 

$SeriesNameOrNum = 'Series 3'; 
$NewLegend =  'Closed 31-60 Days Late'; 
$NewValues = array(
            0, 
            (int)$ecdClosureStatus['ThirtyOneToSixtyDaysLate'] 
           ); 
$TBS->PlugIn(OPENTBS_CHART, $ChartNameOrNum, $SeriesNameOrNum, $NewValues, $NewLegend); 

$SeriesNameOrNum = 'Series 4'; 
$NewLegend = 'Closed 61-90 Days Late'; 
$NewValues =  array(
            0, 
            (int)$ecdClosureStatus['SixtyOneToNinetyDaysLate'] 
           ); 
$TBS->PlugIn(OPENTBS_CHART, $ChartNameOrNum, $SeriesNameOrNum, $NewValues, $NewLegend); 

$SeriesNameOrNum = 'Series 5'; 
$NewLegend = 'Closed >90 Days Late'; 
$NewValues = array(
            0, 
            (int)$ecdClosureStatus['ClosedMoreThanNinetyDaysLate'] 
           ); 
$TBS->PlugIn(OPENTBS_CHART, $ChartNameOrNum, $SeriesNameOrNum, $NewValues, $NewLegend); 

回答

0

我修改$ NewValues阵列对于每个系列的是两个元件的阵列,与所述第一个元素是x轴的值和所述第二元件是所述Y轴值。 x轴值是一个包含两个值(“闭合时间”,“闭合延迟”)的数组,y轴是一个由两个元素组成的数组(一个元素为零,另一个为该x值的值关闭时间或晚关闭)

输出格拉夫

Output Stacked Bar Chart

$NewValues = array(array('Closed On Time', 'Closed Late'), array(
             (int)$ecdClosureStatus['ClosedOnTime'], 
             0 
            )); 

解决方案代码

$ecdClosureStatus = getClosureChartData('ECD'); 
    $ChartNameOrNum = 'chart3'; // Title of the shape that embeds the chart 
    $ChartRef = 'chart3'; // Title of the shape that embeds the chart 
    $SeriesNameOrNum = 'Series 1'; 
    $NewLegend = "Closed On Time"; 
    $NewValues = array(array('Closed On Time', 'Closed Late'), array(
             (int)$ecdClosureStatus['ClosedOnTime'], 
             0 
            )); 
    $TBS->PlugIn(OPENTBS_CHART, $ChartNameOrNum, $SeriesNameOrNum, $NewValues, $NewLegend); 

    $SeriesNameOrNum = 'Series 2'; 
    $NewLegend = '1-30 Days Late'; 
    $NewValues =  array(array('Closed On Time', 'Closed Late'), array(
             0, 
             (int)$ecdClosureStatus['OneToThirtyDaysLate'] 
            )); 
    $TBS->PlugIn(OPENTBS_CHART, $ChartNameOrNum, $SeriesNameOrNum, $NewValues, $NewLegend); 

    $SeriesNameOrNum = 'Series 3'; 
    $NewLegend =  ' 31-60 Days Late'; 
    $NewValues =  array(array('Closed On Time', 'Closed Late'), array(
             0, 
             (int)$ecdClosureStatus['ThirtyOneToSixtyDaysLate'] 
            )); 
    $TBS->PlugIn(OPENTBS_CHART, $ChartNameOrNum, $SeriesNameOrNum, $NewValues, $NewLegend); 

    $SeriesNameOrNum = 'Series 4'; 
    $NewLegend = '61-90 Days Late'; 
    $NewValues =   array(array('Closed On Time', 'Closed Late'), array(
             0, 
             (int)$ecdClosureStatus['SixtyOneToNinetyDaysLate'] 
            )); 
    $TBS->PlugIn(OPENTBS_CHART, $ChartNameOrNum, $SeriesNameOrNum, $NewValues, $NewLegend); 

    $SeriesNameOrNum = 'Series 5'; 
    $NewLegend = ' >90 Days Late'; 
    $NewValues =  array(array('Closed On Time', 'Closed Late'), array(
             0, 
             (int)$ecdClosureStatus['MoreThanNinetyDaysLate'] 
            )); 
    $TBS->PlugIn(OPENTBS_CHART, $ChartNameOrNum, $SeriesNameOrNum, $NewValues, $NewLegend); 
2

你的代码似乎ok.The问题可能来自于该系列#3这可能是你所期望不被内部命名。仔细检查电子表格查看器中的名称,最后不得有空格。您也可以使用按钮«修改Ms Excel中的数据»来尝试。

不过,您可以使用新的OpenTBS命令返回图表的数据。这是在OpenTBS beta version 1.9.5 avaibale,但它是稳定的。

命令:

$data = $TBS->PlugIn(OPENTBS_CHART_INFO, 'chart3'); 
var_dump($data); 
+0

谢谢您的回复。在我的$ ecdClosureStatus数组中,我发现我的某个键的名称不正确。更改数组键名后,我修改了我的代码并获得了结果。我将发布解决方案的代码。 – Vahe

相关问题