Управление маркерами данных диаграммы в презентациях с использованием PHP
Contents
[
Hide
]
Установить параметры маркеров диаграммы
Маркеры можно задать для точек данных диаграммы внутри конкретных рядов. Чтобы установить параметры маркеров диаграммы, выполните следующие шаги:
- Создать экземпляр класса Presentation.
- Создать диаграмму по умолчанию.
- Установить изображение.
- Получить первый ряд диаграммы.
- Добавить новую точку данных.
- Сохранить презентацию на диск.
В приведенном ниже примере мы задали параметры маркеров диаграммы на уровне точек данных.
# Создание пустой презентации
$pres = new Presentation();
try {
# Получить первый слайд
$slide = $pres->getSlides()->get_Item(0);
# Создание стандартной диаграммы
$chart = $slide->getShapes()->addChart(ChartType::LineWithMarkers, 0, 0, 400, 400);
# Получение индекса листа данных диаграммы по умолчанию
$defaultWorksheetIndex = 0;
# Получение листа данных диаграммы
$fact = $chart->getChartData()->getChartDataWorkbook();
# Удалить демонстрационные серии
$chart->getChartData()->getSeries()->clear();
# Добавить новую серию
$chart->getChartData()->getSeries()->add($fact->getCell($defaultWorksheetIndex, 1, 1, "Series 1"), $chart->getType());
# Загрузить изображение 1
$imgx1 = $pres->getImages()->addImage(new Java("java.io.FileInputStream", new Java("java.io.File", "Desert.jpg")));
# Загрузить изображение 2
$imgx2 = $pres->getImages()->addImage(new Java("java.io.FileInputStream", new Java("java.io.File", "Tulips.jpg")));
# Получить первую серию диаграммы
$series = $chart->getChartData()->getSeries()->get_Item(0);
# Добавить новую точку (1:3) туда.
$point = $series->getDataPoints()->addDataPointForLineSeries($fact->getCell($defaultWorksheetIndex, 1, 1, 4.5));
$point->getMarker()->getFormat()->getFill()->setFillType(FillType::Picture);
$point->getMarker()->getFormat()->getFill()->getPictureFillFormat()->getPicture()->setImage($imgx1);
$point = $series->getDataPoints()->addDataPointForLineSeries($fact->getCell($defaultWorksheetIndex, 2, 1, 2.5));
$point->getMarker()->getFormat()->getFill()->setFillType(FillType::Picture);
$point->getMarker()->getFormat()->getFill()->getPictureFillFormat()->getPicture()->setImage($imgx2);
$point = $series->getDataPoints()->addDataPointForLineSeries($fact->getCell($defaultWorksheetIndex, 3, 1, 3.5));
$point->getMarker()->getFormat()->getFill()->setFillType(FillType::Picture);
$point->getMarker()->getFormat()->getFill()->getPictureFillFormat()->getPicture()->setImage($imgx1);
$point = $series->getDataPoints()->addDataPointForLineSeries($fact->getCell($defaultWorksheetIndex, 4, 1, 4.5));
$point->getMarker()->getFormat()->getFill()->setFillType(FillType::Picture);
$point->getMarker()->getFormat()->getFill()->getPictureFillFormat()->getPicture()->setImage($imgx2);
# Изменение маркера серии диаграммы
$series->getMarker()->setSize(15);
# Сохранить презентацию с диаграммой
$pres->save("ScatterChart.pptx", SaveFormat::Pptx);
} catch (JavaException $e) {
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
FAQ
Какие формы маркеров доступны из коробки?
Доступны стандартные формы (круг, квадрат, ромб, треугольник и т.д.); список определяется классом MarkerStyleType. Если нужна нестандартная форма, используйте маркер с заполнением изображением, чтобы имитировать пользовательскую визуализацию.
Сохраняются ли маркеры при экспорте диаграммы в изображение или SVG?
Да. При рендеринге диаграмм в растровые форматы или сохранении форм в SVG, маркеры сохраняют свой внешний вид и настройки, включая размер, заливку и контур.