2016-01-14 2 views
1

Я пытаюсь создать сложную гистограмму, как показано ниже, встроенную на слайде шаблона PowerPoint. Когда я запускаю свой скрипт ниже, я получаю сообщение об ошибке.openTBS/PHP - Как создать сложную гистограмму?

TinyButStrong Ошибка OpenTBS Plugin: (ChartChangeSeries) 'chart3': не смог основать серии 'Series 3' в графике "chart3. Процесс заканчивается, если вы не установите для свойства 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 ​​массив для каждой серии, чтобы быть массивом из двух элементов, причем первый элемент представляет значения оси х, а второй элемент является значение оси 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, которая возвращает данные диаграммы. Это avaibale в OpenTBS beta version 1.9.5, но он стабилен.

Команда:

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

Благодарим за отзыв. В моем массиве $ ecdClosureStatus я обнаружил, что у меня было неправильное имя для одного из моих ключей. После изменения имени ключа массива я изменил свой код и получил результат. Я отправлю код для решения. – Vahe

Смежные вопросы