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

ตั้งค่าการทับซ้อนของชุดข้อมูลแผนภูมิ
ด้วยเมธอด getParentSeriesGroup คุณสามารถระบุว่าคอลัมน์และแถบควรทับซ้อนกันเท่าไหร่ในแผนภูมิ 2 มิติ (ช่วง: -100 ถึง 100) คุณสมบัตินี้ใช้กับชุดข้อมูลทั้งหมดของกลุ่มชุดข้อมูลหลัก: เป็นการสืบทอดคุณสมบัติของกลุ่มที่เหมาะสม ดังนั้นคุณสมบัตินี้เป็นแบบอ่านอย่างเดียว
ใช้เมธอด ChartSeriesGroup::setOverlap เพื่อกำหนดค่าที่คุณต้องการสำหรับ Overlap
- สร้างอ็อบเจกต์จากคลาส Presentation
- เพิ่มแผนภูมิคอลัมน์แบบคลัสเตอร์บนสไลด์
- เข้าถึงชุดข้อมูลแผนภูมิแรก
- เข้าถึง
ParentSeriesGroupของชุดข้อมูลแผนภูมิและกำหนดค่าการทับซ้อนที่ต้องการสำหรับชุดข้อมูลนั้น - บันทึกงานนำเสนอที่แก้ไขเป็นไฟล์ 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 ให้คุณเปลี่ยนสีของชุดข้อมูลได้ดังนี้
- สร้างอ็อบเจกต์จากคลาส Presentation
- เพิ่มแผนภูมิบนสไลด์
- เข้าถึงชุดข้อมูลที่ต้องการเปลี่ยนสี
- กำหนดประเภทการเติมและสีที่ต้องการ
- บันทึกงานนำเสนอที่แก้ไข
โค้ด 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 ให้คุณเปลี่ยนสีของประเภทในชุดข้อมูลได้ดังนี้
- สร้างอ็อบเจกต์จากคลาส Presentation
- เพิ่มแผนภูมิบนสไลด์
- เข้าถึงประเภทของชุดข้อมูลที่ต้องการเปลี่ยนสี
- กำหนดประเภทการเติมและสีที่ต้องการ
- บันทึกงานนำเสนอที่แก้ไข
โค้ดนี้แสดงวิธีเปลี่ยนสีของประเภทในชุดข้อมูล:
$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 ให้คุณตั้งค่าสีเติมอัตโนมัติสำหรับชุดข้อมูลแผนภูมิภายในพื้นที่แผนภูมิได้ดังนี้
- สร้างอ็อบเจกต์จากคลาส Presentation
- รับอ้างอิงสไลด์ตามดัชนีที่ต้องการ
- เพิ่มแผนภูมิพร้อมข้อมูลเริ่มต้นตามประเภทที่คุณต้องการ (ในตัวอย่างนี้เราใช้
ChartType::ClusteredColumn) - เข้าถึงชุดข้อมูลแผนภูมิและตั้งค่าสีเติมเป็น Automatic
- บันทึกงานนำเสนอเป็นไฟล์ 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 ให้คุณตั้งค่าสีเติมกลับด้านสำหรับชุดข้อมูลแผนภูมิภายในพื้นที่แผนภูมิได้ดังนี้
- สร้างอ็อบเจกต์จากคลาส Presentation
- รับอ้างอิงสไลด์ตามดัชนีที่ต้องการ
- เพิ่มแผนภูมิพร้อมข้อมูลเริ่มต้นตามประเภทที่คุณต้องการ (ในตัวอย่างนี้เราใช้
ChartType::ClusteredColumn) - เข้าถึงชุดข้อมูลแผนภูมิและตั้งค่าสีเติมเป็น Invert
- บันทึกงานนำเสนอเป็นไฟล์ 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 ของชุดข้อมูลแผนภูมิเฉพาะได้ดังนี้
- สร้างอ็อบเจกต์จากคลาส Presentation
- รับอ้างอิงสไลด์ตามดัชนีที่ต้องการ
- รับอ้างอิงแผนภูมิตามดัชนีที่ต้องการ
- วนลูปผ่าน
DataPointsทั้งหมดของแผนภูมิและกำหนดXValueและYValueเป็น null - ลบ
DataPointsทั้งหมดจากชุดข้อมูลแผนภูมิที่ระบุ - บันทึกงานนำเสนอที่แก้ไขเป็นไฟล์ 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 ของชุดข้อมูลได้ดังนี้
- สร้างอ็อบเจกต์จากคลาส Presentation
- เข้าถึงสไลด์แรก
- เพิ่มแผนภูมิพร้อมข้อมูลเริ่มต้น
- เข้าถึงชุดข้อมูลใด ๆ ของแผนภูมิ
- กำหนดคุณสมบัติ
GapWidth - บันทึกงานนำเสนอที่แก้ไขเป็นไฟล์ 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 สำหรับชุดข้อมูลนั้น (หรือกลุ่มชุดข้อมูลหลักของมัน) การเพิ่มค่าจะเพิ่มระยะห่างระหว่างคอลัมน์ ส่วนการลดค่าจะทำให้คอลัมน์ใกล้กันมากขึ้น