2016-01-14 132 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

相關問題