จัดการชุดข้อมูลแผนภูมิในงานนำเสนอด้วย PHP

ภาพรวม

บทความนี้อธิบายบทบาทของ ChartSeries ใน Aspose.Slides โดยมุ่งเน้นที่วิธีการจัดโครงสร้างและการแสดงผลข้อมูลภายในงานนำเสนอ วัตถุเหล่านี้ให้ส่วนประกอบพื้นฐานที่กำหนดชุดข้อมูลจุด, ประเภท, และพารามิเตอร์การแสดงผลในแผนภูมิ โดยการทำงานกับ ChartSeries นักพัฒนาสามารถผสานแหล่งข้อมูลพื้นฐานได้อย่างราบรื่นและควบคุมการแสดงผลข้อมูลอย่างเต็มที่ ทำให้ได้งานนำเสนอที่ขับเคลื่อนด้วยข้อมูลแบบไดนามิกซึ่งสื่อสารข้อมูลเชิงลึกและการวิเคราะห์ได้อย่างชัดเจน

ชุดข้อมูลคือแถวหรือคอลัมน์ของตัวเลขที่ถูกวาดลงบนแผนภูมิ

chart-series-powerpoint

ตั้งค่าการทับซ้อนของชุดข้อมูลแผนภูมิ

ด้วยเมธอด getParentSeriesGroup คุณสามารถระบุว่าคอลัมน์และแถบควรทับซ้อนกันเท่าไหร่ในแผนภูมิ 2 มิติ (ช่วง: -100 ถึง 100) คุณสมบัตินี้ใช้กับชุดข้อมูลทั้งหมดของกลุ่มชุดข้อมูลหลัก: เป็นการสืบทอดคุณสมบัติของกลุ่มที่เหมาะสม ดังนั้นคุณสมบัตินี้เป็นแบบอ่านอย่างเดียว

ใช้เมธอด ChartSeriesGroup::setOverlap เพื่อกำหนดค่าที่คุณต้องการสำหรับ Overlap

  1. สร้างอ็อบเจกต์จากคลาส Presentation
  2. เพิ่มแผนภูมิคอลัมน์แบบคลัสเตอร์บนสไลด์
  3. เข้าถึงชุดข้อมูลแผนภูมิแรก
  4. เข้าถึง ParentSeriesGroup ของชุดข้อมูลแผนภูมิและกำหนดค่าการทับซ้อนที่ต้องการสำหรับชุดข้อมูลนั้น
  5. บันทึกงานนำเสนอที่แก้ไขเป็นไฟล์ PPTX

โค้ด PHP นี้แสดงวิธีตั้งค่าการทับซ้อนสำหรับชุดข้อมูลแผนภูมิ:

  $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. บันทึกงานนำเสนอที่แก้ไข

โค้ด PHP นี้แสดงวิธีเปลี่ยนสีของชุดข้อมูล:

  $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

โค้ด PHP นี้แสดงวิธีตั้งค่าสีเติมอัตโนมัติสำหรับชุดข้อมูลแผนภูมิ:

  $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

โค้ด PHP นี้แสดงการดำเนินการ:

  $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.InvertIfNegative และ ChartDataPoint.InvertIfNegative เมื่อเปิดใช้งานการกลับด้านด้วยคุณสมบัติเหล่านี้ จุดข้อมูลจะเปลี่ยนสีเมื่อได้รับค่าลบ

โค้ด PHP นี้แสดงการดำเนินการ:

  $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 ทั้งหมดของแผนภูมิและกำหนด XValue และ YValue เป็น null
  5. ลบ DataPoints ทั้งหมดจากชุดข้อมูลแผนภูมิที่ระบุ
  6. บันทึกงานนำเสนอที่แก้ไขเป็นไฟล์ PPTX

โค้ด PHP นี้แสดงการดำเนินการ:

  $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));
    # ตั้งค่าค่าความกว้างช่องว่าง
    $series->getParentSeriesGroup()->setGapWidth(50);
    # บันทึกงานนำเสนอลงดิสก์
    $pres->save("GapWidth_out.pptx", SaveFormat::Pptx);
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

คำถามที่พบบ่อย

มีขีดจำกัดจำนวนชุดข้อมูลที่แผนภูมิเดียวสามารถบรรจุได้หรือไม่?

Aspose.Slides ไม่กำหนดขีดจำกัดคงที่สำหรับจำนวนชุดข้อมูลที่คุณเพิ่ม ขีดจำกัดเชิงปฏิบัติจะแปรตามความสามารถในการอ่านของแผนภูมิและหน่วยความจำที่แอปพลิเคชันของคุณมี

ถ้าคอลัมน์ในคลัสเตอร์ห่างกันมากหรือใกล้กันเกินไปจะทำอย่างไร?

ปรับค่า GapWidth สำหรับชุดข้อมูลนั้น (หรือกลุ่มชุดข้อมูลหลักของมัน) การเพิ่มค่าจะเพิ่มระยะห่างระหว่างคอลัมน์ ส่วนการลดค่าจะทำให้คอลัมน์ใกล้กันมากขึ้น