PHP를 사용하여 프레젠테이션의 차트 데이터 시리즈 관리

개요

이 문서에서는 Aspose.Slides에서 ChartSeries의 역할에 대해 설명하며, 프레젠테이션 내에서 데이터가 어떻게 구조화되고 시각화되는지에 중점을 둡니다. 이러한 객체는 차트에서 개별 데이터 포인트, 범주 및 외관 매개변수를 정의하는 기본 요소를 제공합니다. ChartSeries를 사용하면 개발자는 기본 데이터 소스를 원활하게 통합하고 정보 표시 방식을 완전히 제어할 수 있어, 통찰력과 분석을 명확히 전달하는 동적인 데이터 기반 프레젠테이션을 만들 수 있습니다.

시리즈는 차트에 플롯되는 행이나 열의 숫자 집합입니다.

chart-series-powerpoint

차트 시리즈 겹침 설정

getParentSeriesGroup 메서드를 사용하면 2D 차트에서 막대와 열이 겹치는 정도를 지정할 수 있습니다(범위: -100~100). 이 속성은 상위 시리즈 그룹의 모든 시리즈에 적용되며, 해당 그룹 속성의 투영입니다. 따라서 이 속성은 읽기 전용입니다.

ChartSeriesGroup::setOverlap 메서드를 사용하여 Overlap에 원하는 값을 설정합니다.

  1. Presentation 클래스의 인스턴스를 생성합니다.
  2. 슬라이드에 클러스터형 열 차트를 추가합니다.
  3. 첫 번째 차트 시리즈에 접근합니다.
  4. 차트 시리즈의 ParentSeriesGroup에 접근하여 시리즈의 원하는 겹침 값을 설정합니다.
  5. 수정된 프레젠테이션을 PPTX 파일로 저장합니다.
  $pres = new Presentation();
  try {
    # 차트를 추가합니다
    $chart = $pres->getSlides()->get_Item(0)->getShapes()->addChart(ChartType::ClusteredColumn, 50, 50, 600, 400, true);
    $series = $chart->getChartData()->getSeries();
    if (java_values($series->get_Item(0)->getOverlap()) == 0) {
      # 시리즈 겹침을 설정합니다
      $series->get_Item(0)->getParentSeriesGroup()->setOverlap(-30);
    }
    # 프레젠테이션 파일을 디스크에 저장합니다
    $pres->save("SetChartSeriesOverlap_out.pptx", SaveFormat::Pptx);
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

시리즈 색상 변경

Aspose.Slides for PHP via Java에서는 시리즈 색상을 다음과 같이 변경할 수 있습니다:

  1. Presentation 클래스의 인스턴스를 생성합니다.
  2. 슬라이드에 차트를 추가합니다.
  3. 색상을 변경하려는 시리즈에 접근합니다.
  4. 원하는 채우기 유형과 채우기 색상을 설정합니다.
  5. 수정된 프레젠테이션을 저장합니다.
  $pres = new Presentation("test.pptx");
  try {
    $chart = $pres->getSlides()->get_Item(0)->getShapes()->addChart(ChartType::Pie, 50, 50, 600, 400);
    $point = $chart->getChartData()->getSeries()->get_Item(0)->getDataPoints()->get_Item(1);
    $point->setExplosion(30);
    $point->getFormat()->getFill()->setFillType(FillType::Solid);
    $point->getFormat()->getFill()->getSolidFillColor()->setColor(java("java.awt.Color")->BLUE);
    $pres->save("output.pptx", SaveFormat::Pptx);
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

시리즈 범주 색상 변경

Aspose.Slides for PHP via Java에서는 시리즈 범주의 색상을 다음과 같이 변경할 수 있습니다:

  1. Presentation 클래스의 인스턴스를 생성합니다.
  2. 슬라이드에 차트를 추가합니다.
  3. 색상을 변경하려는 시리즈 범주에 접근합니다.
  4. 원하는 채우기 유형과 채우기 색상을 설정합니다.
  5. 수정된 프레젠테이션을 저장합니다.
  $pres = new Presentation();
  try {
    $chart = $pres->getSlides()->get_Item(0)->getShapes()->addChart(ChartType::ClusteredColumn, 50, 50, 600, 400);
    $point = $chart->getChartData()->getSeries()->get_Item(0)->getDataPoints()->get_Item(0);
    $point->getFormat()->getFill()->setFillType(FillType::Solid);
    $point->getFormat()->getFill()->getSolidFillColor()->setColor(java("java.awt.Color")->BLUE);
    $pres->save("output.pptx", SaveFormat::Pptx);
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

시리즈 이름 변경

기본적으로 차트의 범례 이름은 각 열이나 행의 데이터 위에 있는 셀의 내용입니다.

예시(샘플 이미지)에서는

  • 열은 Series 1, Series 2,Series 3;
  • 행은 Category 1, Category 2, Category 3,Category 4.

Aspose.Slides for PHP via Java에서는 차트 데이터와 범례에서 시리즈 이름을 업데이트하거나 변경할 수 있습니다.

이 PHP 코드는 ChartDataWorkbook을 통해 차트 데이터에서 시리즈 이름을 변경하는 방법을 보여줍니다:

  $pres = new Presentation();
  try {
    $chart = $pres->getSlides()->get_Item(0)->getShapes()->addChart(ChartType::Column3D, 50, 50, 600, 400, true);
    $seriesCell = $chart->getChartData()->getChartDataWorkbook()->getCell(0, 0, 1);
    $seriesCell->setValue("New name");
    $pres->save("pres.pptx", SaveFormat::Pptx);
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

이 PHP 코드는 Series를 통해 범례에서 시리즈 이름을 변경하는 방법을 보여줍니다:

  $pres = new Presentation();
  try {
    $chart = $pres->getSlides()->get_Item(0)->getShapes()->addChart(ChartType::Column3D, 50, 50, 600, 400, true);
    $series = $chart->getChartData()->getSeries()->get_Item(0);
    $name = $series->getName();
    $name->getAsCells()->get_Item(0)->setValue("New name");
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

차트 시리즈 채우기 색상 설정

Aspose.Slides for PHP via Java에서는 플롯 영역 내 차트 시리즈에 자동 채우기 색상을 다음과 같이 설정할 수 있습니다:

  1. Presentation 클래스의 인스턴스를 생성합니다.
  2. 인덱스로 슬라이드에 대한 참조를 얻습니다.
  3. 기본 데이터와 선호하는 차트 유형(ChartType::ClusteredColumn 사용)으로 차트를 추가합니다.
  4. 차트 시리즈에 접근하고 채우기 색상을 Automatic으로 설정합니다.
  5. 프레젠테이션을 PPTX 파일로 저장합니다.
  $pres = new Presentation();
  try {
    # 클러스터형 열 차트를 생성합니다
    $chart = $pres->getSlides()->get_Item(0)->getShapes()->addChart(ChartType::ClusteredColumn, 100, 50, 600, 400);
    # 시리즈 채우기 형식을 자동으로 설정합니다
    for($i = 0; $i < java_values($chart->getChartData()->getSeries()->size()) ; $i++) {
      $chart->getChartData()->getSeries()->get_Item($i)->getAutomaticSeriesColor();
    }
    # 프레젠테이션 파일을 디스크에 저장합니다
    $pres->save("AutoFillSeries_out.pptx", SaveFormat::Pptx);
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

차트 시리즈에 반전 채우기 색상 설정

Aspose.Slides에서는 플롯 영역 내 차트 시리즈에 반전 채우기 색상을 다음과 같이 설정할 수 있습니다:

  1. Presentation 클래스의 인스턴스를 생성합니다.
  2. 인덱스로 슬라이드에 대한 참조를 얻습니다.
  3. 기본 데이터와 선호하는 차트 유형(ChartType::ClusteredColumn 사용)으로 차트를 추가합니다.
  4. 차트 시리즈에 접근하고 채우기 색상을 Invert로 설정합니다.
  5. 프레젠테이션을 PPTX 파일로 저장합니다.
  $inverColor = java("java.awt.Color")->RED;
  $pres = new Presentation();
  try {
    $chart = $pres->getSlides()->get_Item(0)->getShapes()->addChart(ChartType::ClusteredColumn, 100, 100, 400, 300);
    $workBook = $chart->getChartData()->getChartDataWorkbook();
    $chart->getChartData()->getSeries()->clear();
    $chart->getChartData()->getCategories()->clear();
    # 새 시리즈와 범주를 추가합니다
    $chart->getChartData()->getSeries()->add($workBook->getCell(0, 0, 1, "Series 1"), $chart->getType());
    $chart->getChartData()->getCategories()->add($workBook->getCell(0, 1, 0, "Category 1"));
    $chart->getChartData()->getCategories()->add($workBook->getCell(0, 2, 0, "Category 2"));
    $chart->getChartData()->getCategories()->add($workBook->getCell(0, 3, 0, "Category 3"));
    # 첫 번째 차트 시리즈를 가져와 시리즈 데이터를 채웁니다.
    $series = $chart->getChartData()->getSeries()->get_Item(0);
    $series->getDataPoints()->addDataPointForBarSeries($workBook->getCell(0, 1, 1, -20));
    $series->getDataPoints()->addDataPointForBarSeries($workBook->getCell(0, 2, 1, 50));
    $series->getDataPoints()->addDataPointForBarSeries($workBook->getCell(0, 3, 1, -30));
    $seriesColor = $series->getAutomaticSeriesColor();
    $series->setInvertIfNegative(true);
    $series->getFormat()->getFill()->setFillType(FillType::Solid);
    $series->getFormat()->getFill()->getSolidFillColor()->setColor($seriesColor);
    $series->getInvertedSolidFillColor()->setColor($inverColor);
    $pres->save("SetInvertFillColorChart_out.pptx", SaveFormat::Pptx);
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

값이 음수일 때 시리즈를 반전하도록 설정

Aspose.Slides에서는 IChartDataPoint.InvertIfNegativeChartDataPoint.InvertIfNegative 속성을 통해 반전을 설정할 수 있습니다. 이 속성을 사용해 반전을 설정하면 데이터 포인트가 음수 값을 받을 때 색상이 반전됩니다.

  $pres = new Presentation();
  try {
    $chart = $pres->getSlides()->get_Item(0)->getShapes()->addChart(ChartType::ClusteredColumn, 50, 50, 600, 400, true);
    $series = $chart->getChartData()->getSeries();
    $chart->getChartData()->getSeries()->clear();
    $chartSeries = $series->add($chart->getChartData()->getChartDataWorkbook()->getCell(0, "B1"), $chart->getType());
    $chartSeries->getDataPoints()->addDataPointForBarSeries($chart->getChartData()->getChartDataWorkbook()->getCell(0, "B2", -5));
    $chartSeries->getDataPoints()->addDataPointForBarSeries($chart->getChartData()->getChartDataWorkbook()->getCell(0, "B3", 3));
    $chartSeries->getDataPoints()->addDataPointForBarSeries($chart->getChartData()->getChartDataWorkbook()->getCell(0, "B4", -2));
    $chartSeries->getDataPoints()->addDataPointForBarSeries($chart->getChartData()->getChartDataWorkbook()->getCell(0, "B5", 1));
    $chartSeries->setInvertIfNegative(false);
    $chartSeries->getDataPoints()->get_Item(2)->setInvertIfNegative(true);
    $pres->save("out.pptx", SaveFormat::Pptx);
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

특정 포인트 데이터 지우기

Aspose.Slides for PHP via Java에서는 특정 차트 시리즈의 DataPoints 데이터를 다음과 같이 지울 수 있습니다:

  1. Presentation 클래스의 인스턴스를 생성합니다.
  2. 인덱스로 슬라이드에 대한 참조를 얻습니다.
  3. 인덱스로 차트에 대한 참조를 얻습니다.
  4. 차트의 모든 DataPoints를 순회하며 XValueYValue를 null로 설정합니다.
  5. 특정 차트 시리즈의 모든 DataPoints를 삭제합니다.
  6. 수정된 프레젠테이션을 PPTX 파일로 저장합니다.
  $pres = new Presentation("TestChart.pptx");
  try {
    $sl = $pres->getSlides()->get_Item(0);
    $chart = $sl->getShapes()->get_Item(0);
    foreach($chart->getChartData()->getSeries()->get_Item(0)->getDataPoints() as $dataPoint) {
      $dataPoint->getXValue()->getAsCell()->setValue(null);
      $dataPoint->getYValue()->getAsCell()->setValue(null);
    }
    $chart->getChartData()->getSeries()->get_Item(0)->getDataPoints()->clear();
    $pres->save("ClearSpecificChartSeriesDataPointsData.pptx", SaveFormat::Pptx);
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

시리즈 간격 폭 설정

Aspose.Slides for PHP via Java에서는 GapWidth 속성을 통해 시리즈의 간격 폭을 다음과 같이 설정할 수 있습니다:

  1. Presentation 클래스의 인스턴스를 생성합니다.
  2. 첫 번째 슬라이드에 접근합니다.
  3. 기본 데이터와 함께 차트를 추가합니다.
  4. 원하는 차트 시리즈에 접근합니다.
  5. GapWidth 속성을 설정합니다.
  6. 수정된 프레젠테이션을 PPTX 파일로 저장합니다.
  # 빈 프레젠테이션을 생성합니다
  $pres = new Presentation();
  try {
    # 프레젠테이션의 첫 번째 슬라이드에 접근합니다
    $slide = $pres->getSlides()->get_Item(0);
    # 기본 데이터로 차트를 추가합니다
    $chart = $slide->getShapes()->addChart(ChartType::StackedColumn, 0, 0, 500, 500);
    # 차트 데이터 시트의 인덱스를 설정합니다
    $defaultWorksheetIndex = 0;
    # 차트 데이터 워크시트를 가져옵니다
    $fact = $chart->getChartData()->getChartDataWorkbook();
    # 시리즈를 추가합니다
    $chart->getChartData()->getSeries()->add($fact->getCell($defaultWorksheetIndex, 0, 1, "Series 1"), $chart->getType());
    $chart->getChartData()->getSeries()->add($fact->getCell($defaultWorksheetIndex, 0, 2, "Series 2"), $chart->getType());
    # 범주를 추가합니다
    $chart->getChartData()->getCategories()->add($fact->getCell($defaultWorksheetIndex, 1, 0, "Caetegoty 1"));
    $chart->getChartData()->getCategories()->add($fact->getCell($defaultWorksheetIndex, 2, 0, "Caetegoty 2"));
    $chart->getChartData()->getCategories()->add($fact->getCell($defaultWorksheetIndex, 3, 0, "Caetegoty 3"));
    # 두 번째 차트 시리즈를 가져옵니다
    $series = $chart->getChartData()->getSeries()->get_Item(1);
    # 시리즈 데이터를 채웁니다
    $series->getDataPoints()->addDataPointForBarSeries($fact->getCell($defaultWorksheetIndex, 1, 1, 20));
    $series->getDataPoints()->addDataPointForBarSeries($fact->getCell($defaultWorksheetIndex, 2, 1, 50));
    $series->getDataPoints()->addDataPointForBarSeries($fact->getCell($defaultWorksheetIndex, 3, 1, 30));
    $series->getDataPoints()->addDataPointForBarSeries($fact->getCell($defaultWorksheetIndex, 1, 2, 30));
    $series->getDataPoints()->addDataPointForBarSeries($fact->getCell($defaultWorksheetIndex, 2, 2, 10));
    $series->getDataPoints()->addDataPointForBarSeries($fact->getCell($defaultWorksheetIndex, 3, 2, 60));
    # GapWidth 값을 설정합니다
    $series->getParentSeriesGroup()->setGapWidth(50);
    # 프레젠테이션을 디스크에 저장합니다
    $pres->save("GapWidth_out.pptx", SaveFormat::Pptx);
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

FAQ

단일 차트에 포함될 수 있는 시리즈 수에 제한이 있나요?

Aspose.Slides는 추가하는 시리즈 수에 고정된 상한을 두지 않습니다. 실질적인 제한은 차트 가독성과 애플리케이션이 사용할 수 있는 메모리에 의해 결정됩니다.

클러스터 내 열 간격이 너무 좁거나 너무 넓으면 어떻게 해야 하나요?

해당 시리즈(또는 상위 시리즈 그룹)의 GapWidth 설정을 조정하십시오. 값을 늘리면 열 사이의 공간이 넓어지고, 값을 줄이면 열이 서로 가까워집니다.