openTBS / Как мне создать гистограмму с накоплением?

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

TinyButStrong Ошибка Плагин OpenTBS: (ChartChangeSeries) ‘chart3’:
невозможно найти серию ‘Series 3’ на графике ‘chart3’. Процесс
заканчивается, если только вы не установили для свойства NoErr значение true.

Насколько я вижу, мои серии четко определены вместе с каждой из двух меток для оси x.

Где я иду не так и как я могу устранить эту ошибку?

Определение таблицы в шаблоне

Образец столбчатой ​​диаграммы с накоплением

$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);

1

Решение

Ваш код выглядит нормально. Проблема, вероятно, исходит из серии № 3, которая не может быть названа внутренне, как вы ожидаете. Дважды проверьте имя в программе просмотра электронных таблиц, в конце не должно быть пробелов. Вы также можете попробовать с помощью кнопки «Изменить данные в MS Excel».

Тем не менее вы можете использовать новую команду OpenTBS, которая возвращает данные диаграммы. Это доступно в OpenTBS бета-версия 1.9.5 но это стабильно.

Команда:

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

Другие решения

Я изменил свой массив $ NewValues ​​для каждой серии, чтобы он представлял собой массив из двух элементов, причем первый элемент — это значения оси x, а второй — значение оси y. Значение оси x представляло собой массив из двух значений («Закрыто по времени», «Закрыто поздно»), а ось y представляла собой массив из двух элементов (один элемент равен нулю, а другой — значению для этого значения x (либо закрыто вовремя или закрыто поздно)

Выходной график

Гистограмма с накоплением выходных данных

пример

 $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);
0

По вопросам рекламы [email protected]