Я пытаюсь создать гистограмму с накоплением, как показано ниже, встроенную в слайд шаблона 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);
Ваш код выглядит нормально. Проблема, вероятно, исходит из серии № 3, которая не может быть названа внутренне, как вы ожидаете. Дважды проверьте имя в программе просмотра электронных таблиц, в конце не должно быть пробелов. Вы также можете попробовать с помощью кнопки «Изменить данные в MS Excel».
Тем не менее вы можете использовать новую команду OpenTBS, которая возвращает данные диаграммы. Это доступно в OpenTBS бета-версия 1.9.5 но это стабильно.
Команда:
$data = $TBS->PlugIn(OPENTBS_CHART_INFO, 'chart3');
var_dump($data);
Я изменил свой массив $ 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);