ปรับแต่งจุดข้อมูลในแผนภูมิ Treemap และ Sunburst ด้วย Java

การแนะนำ

นอกเหนือจากประเภทแผนภูมิ PowerPoint อื่น ๆ มีสองประเภท “เชิงลำดับขั้น” คือแผนภูมิ Treemap และแผนภูมิ Sunburst (ที่รู้จักกันในชื่อ Sunburst Graph, Sunburst Diagram, Radial Chart, Radial Graph หรือ Multi Level Pie Chart) แผนภูมิเหล่านี้แสดงข้อมูลเชิงลำดับขั้นที่จัดระเบียบเป็นต้นไม้ – จากใบไม้ไปยังยอดของกิ่ง ใบไม้ถูกกำหนดโดยจุดข้อมูลของ series และแต่ละระดับการจัดกลุ่มที่ซ้อนกันต่อมาถูกกำหนดโดยหมวดหมู่ที่สอดคล้องกัน Aspose.Slides for Java ให้คุณจัดรูปแบบจุดข้อมูลของแผนภูมิ Sunburst และ Treemap ด้วย Java

นี่คือแผนภูมิ Sunburst ที่ข้อมูลในคอลัมน์ Series1 กำหนดโนดใบไม้ ส่วนคอลัมน์อื่น ๆ กำหนดจุดข้อมูลเชิงลำดับขั้น:

todo:image_alt_text

เริ่มต้นด้วยการเพิ่มแผนภูมิ Sunburst ใหม​้เข้าไปในงานนำเสนอ:

Presentation pres = new Presentation();
try {
    IChart chart = pres.getSlides().get_Item(0).getShapes().addChart(ChartType.Sunburst, 100, 100, 450, 400);

    // ...
} finally {
    if (pres != null) pres.dispose();
}

หากต้องการจัดรูปแบบจุดข้อมูลของแผนภูมิ เราควรใช้สิ่งต่อไปนี้:

IChartDataPointLevelsManager, IChartDataPointLevel class และ IChartDataPoint.getDataPointLevels method ให้การเข้าถึงการจัดรูปแบบจุดข้อมูลของแผนภูมิ Treemap และ Sunburst. IChartDataPointLevelsManager ใช้สำหรับเข้าถึงหมวดหมู่หลายระดับ – มันเป็นคอนเทนเนอร์ของ IChartDataPointLevel objects. โดยพื้นฐานแล้วเป็น wrapper สำหรับ IChartCategoryLevelsManager พร้อมกับ คุณสมบัติเพิ่มเติมที่จำเพาะสำหรับจุดข้อมูล. คลาส IChartDataPointLevel มี สองเมธอด: getFormat และ getDataLabel ซึ่ง ให้การเข้าถึงการตั้งค่าที่สอดคล้องกัน.

แสดงค่าจุดข้อมูล

แสดงค่าของจุดข้อมูล “Leaf 4”:

IChartDataPointCollection dataPoints = chart.getChartData().getSeries().get_Item(0).getDataPoints();
dataPoints.get_Item(3).getDataPointLevels().get_Item(0).getLabel().getDataLabelFormat().setShowValue(true);

todo:image_alt_text

ตั้งค่าป้ายและสีของจุดข้อมูล

ตั้งค่าป้ายข้อมูล “Branch 1” ให้แสดงชื่อ series (“Series1”) แทนชื่อหมวดหมู่ แล้วตั้งค่าสีข้อความเป็นสีเหลือง:

IDataLabel branch1Label = dataPoints.get_Item(0).getDataPointLevels().get_Item(0).getLabel();
branch1Label.getDataLabelFormat().setShowCategoryName(false);
branch1Label.getDataLabelFormat().setShowSeriesName(true);

branch1Label.getDataLabelFormat().getTextFormat().getPortionFormat().getFillFormat().setFillType(FillType.Solid);
branch1Label.getDataLabelFormat().getTextFormat().getPortionFormat().getFillFormat().getSolidFillColor().setColor(Color.YELLOW);

todo:image_alt_text

ตั้งค่าสีของสาขาจุดข้อมูล

เปลี่ยนสีของสาขา “Steam 4”:

Presentation pres = new Presentation();
try {
    IChart chart = pres.getSlides().get_Item(0).getShapes().addChart(ChartType.Sunburst, 100, 100, 450, 400);

    IChartDataPointCollection dataPoints = chart.getChartData().getSeries().get_Item(0).getDataPoints();

    IChartDataPointLevel stem4branch = dataPoints.get_Item(9).getDataPointLevels().get_Item(1);

    stem4branch.getFormat().getFill().setFillType(FillType.Solid);
    stem4branch.getFormat().getFill().getSolidFillColor().setColor(Color.RED);

    pres.save("pres.pptx", SaveFormat.Pptx);
} finally {
    if (pres != null) pres.dispose();
}

todo:image_alt_text

FAQ

ฉันสามารถเปลี่ยนลำดับ (การเรียงลำดับ) ของส่วนใน Sunburst/Treemap ได้หรือไม่?

ไม่ได้ PowerPoint จะเรียงลำดับส่วนอัตโนมัติ (โดยทั่วไปคือค่าลดลงตามเข็มนาฬิกา) Aspose.Slides ทำตามพฤติกรรมนี้เช่นกัน: คุณไม่สามารถเปลี่ยนลำดับโดยตรงได้; ต้องทำการเตรียมข้อมูลล่วงหน้าเพื่อให้ได้ลำดับที่ต้องการ

ธีมของงานนำเสนอมีผลต่อสีของส่วนและป้ายอย่างไร?

สีของแผนภูมิสืบทอดจาก theme/palette ของงานนำเสนอ เว้นแต่คุณจะกำหนดสีเติมหรือฟอนต์อย่างชัดเจน เพื่อผลลัพธ์ที่สม่ำเสมอ ควรกำหนดสีเติมแบบทึบและการจัดรูปแบบข้อความที่ระดับที่ต้องการ

การส่งออกไปยัง PDF/PNG จะรักษาสีสาขาที่กำหนดเองและการตั้งค่าป้ายหรือไม่?

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

ฉันสามารถคำนวณพิกัดจริงของป้าย/องค์ประกอบเพื่อวาง overlay แบบกำหนดเองบนแผนภูมิได้หรือไม่?

ได้ หลังจากแผนภูมิถูกวาง layout ตรวจสอบแล้ว จะมีค่า x และ y จริงสำหรับองค์ประกอบ (เช่น DataLabel) ซึ่งช่วยให้กำหนดตำแหน่ง overlay อย่างแม่นยำ.