Настройка осей диаграмм в презентациях с помощью PHP

Получить максимальные значения на вертикальной оси диаграмм

Aspose.Slides for PHP via Java позволяет получать минимальные и максимальные значения на вертикальной оси. Выполните следующие шаги:

  1. Создайте экземпляр класса Presentation.
  2. Получите первый слайд.
  3. Добавьте диаграмму с данными по умолчанию.
  4. Получите фактическое максимальное значение на оси.
  5. Получите фактическое минимальное значение на оси.
  6. Получите фактическую основную единицу измерения оси.
  7. Получите фактическую вспомогательную единицу измерения оси.
  8. Получите фактический масштаб основной единицы измерения оси.
  9. Получите фактический масштаб вспомогательной единицы измерения оси.

Этот пример кода — реализация вышеуказанных шагов — показывает, как получить требуемые значения :

  $pres = new Presentation();
  try {
    $chart = $pres->getSlides()->get_Item(0)->getShapes()->addChart(ChartType::Area, 100, 100, 500, 350);
    $chart->validateChartLayout();
    $maxValue = $chart->getAxes()->getVerticalAxis()->getActualMaxValue();
    $minValue = $chart->getAxes()->getVerticalAxis()->getActualMinValue();
    $majorUnit = $chart->getAxes()->getHorizontalAxis()->getActualMajorUnit();
    $minorUnit = $chart->getAxes()->getHorizontalAxis()->getActualMinorUnit();
    # Сохраняет презентацию
    $pres->save("MaxValuesVerticalAxis_out.pptx", SaveFormat::Pptx);
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

Переставить данные между осями

Aspose.Slides позволяет быстро переставлять данные между осями — данные, представленные на вертикальной оси (y‑ось), перемещаются на горизонтальную ось (x‑ось) и наоборот.

Этот PHP‑код показывает, как выполнить задачу перестановки данных между осями на диаграмме:

  $pres = new Presentation();
  try {
    $chart = $pres->getSlides()->get_Item(0)->getShapes()->addChart(ChartType::ClusteredColumn, 100, 100, 400, 300);
    # Переключает строки и столбцы
    $chart->getChartData()->switchRowColumn();
    # Сохраняет презентацию
    $pres->save("SwitchChartRowColumns_out.pptx", SaveFormat::Pptx);
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

Отключить вертикальную ось для линейных диаграмм

Этот PHP‑код показывает, как скрыть вертикальную ось для линейной диаграммы:

  $pres = new Presentation();
  try {
    $chart = $pres->getSlides()->get_Item(0)->getShapes()->addChart(ChartType::Line, 100, 100, 400, 300);
    $chart->getAxes()->getVerticalAxis()->setVisible(false);
    $pres->save("chart.pptx", SaveFormat::Pptx);
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

Отключить горизонтальную ось для линейных диаграмм

Этот код показывает, как скрыть горизонтальную ось для линейной диаграммы:

  $pres = new Presentation();
  try {
    $chart = $pres->getSlides()->get_Item(0)->getShapes()->addChart(ChartType::Line, 100, 100, 400, 300);
    $chart->getAxes()->getHorizontalAxis()->setVisible(false);
    $pres->save("chart.pptx", SaveFormat::Pptx);
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

Изменить категориальную ось

С помощью свойства CategoryAxisType вы можете указать желаемый тип категориальной оси (date или text). Этот код демонстрирует операцию:

  $presentation = new Presentation("ExistingChart.pptx");
  try {
    $chart = $presentation->getSlides()->get_Item(0)->getShapes()->get_Item(0);
    $chart->getAxes()->getHorizontalAxis()->setCategoryAxisType(CategoryAxisType::Date);
    $chart->getAxes()->getHorizontalAxis()->setAutomaticMajorUnit(false);
    $chart->getAxes()->getHorizontalAxis()->setMajorUnit(1);
    $chart->getAxes()->getHorizontalAxis()->setMajorUnitScale(TimeUnitType::Months);
    $presentation->save("ChangeChartCategoryAxis_out.pptx", SaveFormat::Pptx);
  } finally {
    if (!java_is_null($presentation)) {
      $presentation->dispose();
    }
  }

Установить формат даты для значений категориальной оси

Aspose.Slides for PHP via Java позволяет установить формат даты для значения категориальной оси. Операция продемонстрирована в этом PHP‑коде:

  $pres = new Presentation();
  try {
    $chart = $pres->getSlides()->get_Item(0)->getShapes()->addChart(ChartType::Area, 50, 50, 450, 300);
    $wb = $chart->getChartData()->getChartDataWorkbook();
    $wb->clear(0);
    $chart->getChartData()->getCategories()->clear();
    $chart->getChartData()->getSeries()->clear();
    $chart->getChartData()->getCategories()->add($wb->getCell(0, "A2", convertToOADate(new GregorianCalendar(2015, 1, 1))));
    $chart->getChartData()->getCategories()->add($wb->getCell(0, "A3", convertToOADate(new GregorianCalendar(2016, 1, 1))));
    $chart->getChartData()->getCategories()->add($wb->getCell(0, "A4", convertToOADate(new GregorianCalendar(2017, 1, 1))));
    $chart->getChartData()->getCategories()->add($wb->getCell(0, "A5", convertToOADate(new GregorianCalendar(2018, 1, 1))));
    $series = $chart->getChartData()->getSeries()->add(ChartType::Line);
    $series->getDataPoints()->addDataPointForLineSeries($wb->getCell(0, "B2", 1));
    $series->getDataPoints()->addDataPointForLineSeries($wb->getCell(0, "B3", 2));
    $series->getDataPoints()->addDataPointForLineSeries($wb->getCell(0, "B4", 3));
    $series->getDataPoints()->addDataPointForLineSeries($wb->getCell(0, "B5", 4));
    $chart->getAxes()->getHorizontalAxis()->setCategoryAxisType(CategoryAxisType::Date);
    $chart->getAxes()->getHorizontalAxis()->setNumberFormatLinkedToSource(false);
    $chart->getAxes()->getHorizontalAxis()->setNumberFormat("yyyy");
    $pres->save("output.pptx", SaveFormat::Pptx);
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

Установить угол поворота заголовка оси диаграммы

Aspose.Slides for PHP via Java позволяет установить угол поворота заголовка оси диаграммы. Этот PHP‑код демонстрирует операцию:

  $pres = new Presentation();
  try {
    $chart = $pres->getSlides()->get_Item(0)->getShapes()->addChart(ChartType::ClusteredColumn, 50, 50, 450, 300);
    $chart->getAxes()->getVerticalAxis()->setTitle(true);
    $chart->getAxes()->getVerticalAxis()->getTitle()->getTextFormat()->getTextBlockFormat()->setRotationAngle(90);
    $pres->save("output.pptx", SaveFormat::Pptx);
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

Установить положение оси на категориальной или оси значений

Aspose.Slides for PHP via Java позволяет установить позицию оси в категориальной или оси значений. Этот PHP‑код показывает, как выполнить задачу:

  $pres = new Presentation();
  try {
    $chart = $pres->getSlides()->get_Item(0)->getShapes()->addChart(ChartType::ClusteredColumn, 50, 50, 450, 300);
    $chart->getAxes()->getHorizontalAxis()->setAxisBetweenCategories(true);
    $pres->save("output.pptx", SaveFormat::Pptx);
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

Включить отображение подписи единицы измерения на оси значений диаграммы

Aspose.Slides for PHP via Java позволяет настроить диаграмму для отображения подписи единицы измерения на оси значений. Этот PHP‑код демонстрирует операцию:

  $pres = new Presentation();
  try {
    $chart = $pres->getSlides()->get_Item(0)->getShapes()->addChart(ChartType::ClusteredColumn, 50, 50, 450, 300);
    $chart->getAxes()->getVerticalAxis()->setDisplayUnit(DisplayUnitType::Millions);
    $pres->save("output.pptx", SaveFormat::Pptx);
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

Часто задаваемые вопросы

Как задать значение, где одна ось пересекает другую (пересечение осей)?

Оси предоставляют crossing setting: вы можете выбрать пересечение в нуле, в максимальной категории/значении или в конкретном числовом значении. Это полезно для смещения оси X вверх или вниз или для выделения базовой линии.

Как позиционировать метки делений относительно оси (рядом, снаружи, внутри)?

Установите label position в значение “cross”, “outside” или “inside”. Это влияет на читаемость и помогает экономить место, особенно на маленьких диаграммах.