ปรับแต่งจุดข้อมูลในแผนภูมิ Treemap และ Sunburst ด้วย С++
บทนำ
นอกเหนือจากประเภทอื่นของแผนภูมิ PowerPoint มีสองประเภท “แบบลำดับชั้น” คือแผนภูมิ Treemap และ Sunburst (ที่รู้จักกันในชื่อ Sunburst Graph, Sunburst Diagram, Radial Chart, Radial Graph หรือ Multi Level Pie Chart) แผนภูมิเหล่านี้แสดงข้อมูลเชิงลำดับชั้นที่จัดระเบียบเป็นต้นไม้ – จากใบต่อถึงยอดของกิ่ง ใบถูกกำหนดโดยจุดข้อมูลของซีรีส์ และแต่ละระดับการจัดกลุ่มซ้อนไปต่อโดยกำหนดโดยหมวดหมู่ที่สอดคล้อง Aspose.Slides for C++ ช่วยให้สามารถจัดรูปแบบจุดข้อมูลของแผนภูมิ Sunburst และ Treemap ใน C++ ได้
นี่คือแผนภูมิ Sunburst ที่ข้อมูลในคอลัมน์ Series1 กำหนดโหนดใบ ในขณะที่คอลัมน์อื่นกำหนดจุดข้อมูลเชิงลำดับชั้น:
เริ่มต้นด้วยการเพิ่มแผนภูมิ Sunburst ใหม่ลงในงานพรีเซนเทชั่น:
auto pres = System::MakeObject<Presentation>();
auto chart = pres->get_Slides()->idx_get(0)->get_Shapes()->AddChart(ChartType::Sunburst, 100.0f, 100.0f, 450.0f, 400.0f);
// ...
ดูเพิ่มเติม
หากต้องการจัดรูปแบบจุดข้อมูลของแผนภูมิ เราควรใช้สิ่งต่อไปนี้:
IChartDataPointLevelsManager, IChartDataPointLevel classes and IChartDataPoint::get_DataPointLevels() method provide access to format data points of Treemap and Sunburst charts. IChartDataPointLevelsManager is used for accessing multi-level categories - it represents the container of IChartDataPointLevel objects. Basically it is a wrapper for IChartCategoryLevelsManager with the properties added specific for data points. IChartDataPointLevel class has two methods: get_Format() and get_Label() which provide access to corresponding settings.
แสดงค่าจุดข้อมูล
แสดงค่าของจุดข้อมูล “Leaf 4”:
auto dataPoints = chart->get_ChartData()->get_Series()->idx_get(0)->get_DataPoints();
dataPoints->idx_get(3)->get_DataPointLevels()->idx_get(0)->get_Label()->get_DataLabelFormat()->set_ShowValue(true);
ตั้งค่าป้ายและสีของจุดข้อมูล
ตั้งค่าป้ายข้อมูลของ “Branch 1” ให้แสดงชื่อซีรีส์ (“Series1”) แทนชื่อหมวดหมู่ จากนั้นตั้งค่าสีข้อความเป็นสีเหลือง:
auto branch1Label = dataPoints->idx_get(0)->get_DataPointLevels()->idx_get(2)->get_Label();
branch1Label->get_DataLabelFormat()->set_ShowCategoryName(false);
branch1Label->get_DataLabelFormat()->set_ShowSeriesName(true);
branch1Label->get_DataLabelFormat()->get_TextFormat()->get_PortionFormat()->get_FillFormat()->set_FillType(FillType::Solid);
branch1Label->get_DataLabelFormat()->get_TextFormat()->get_PortionFormat()->get_FillFormat()->get_SolidFillColor()->set_Color(Color::get_Yellow());
ตั้งค่าสีสาขาของจุดข้อมูล
เปลี่ยนสีของสาขา “Stem 4”:
auto pres = System::MakeObject<Presentation>();
auto chart = pres->get_Slides()->idx_get(0)->get_Shapes()->AddChart(ChartType::Sunburst, 100.0f, 100.0f, 450.0f, 400.0f);
auto dataPoints = chart->get_ChartData()->get_Series()->idx_get(0)->get_DataPoints();
auto stem4branch = dataPoints->idx_get(9)->get_DataPointLevels()->idx_get(1);
stem4branch->get_Format()->get_Fill()->set_FillType(FillType::Solid);
stem4branch->get_Format()->get_Fill()->get_SolidFillColor()->set_Color(Color::get_Red());
pres->Save(u"pres.pptx", SaveFormat::Pptx);
คำถามที่พบบ่อย
ฉันสามารถเปลี่ยนลำดับ (การจัดเรียง) ของเซกเมนต์ใน Sunburst/Treemap ได้หรือไม่?
ไม่ PowerPoint จะจัดเรียงเซกเมนต์โดยอัตโนมัติ (โดยทั่วไปตามค่าลดลงตามเข็มนาฬิกา) Aspose.Slides ทำตามพฤติกรรมนี้: คุณไม่สามารถเปลี่ยนลำดับได้โดยตรง; คุณต้องทำโดยการประมวลผลข้อมูลล่วงหน้า
ธีมของงานพรีเซนเทชั่นมีผลต่อสีของเซกเมนต์และป้ายอย่างไร?
สีของแผนภูมิจะสืบทอดจาก theme/palette ของงานพรีเซนเทชั่น เว้นแต่คุณจะกำหนดการเติมสี/ฟอนต์อย่างเจาะจง เพื่อผลลัพธ์ที่สม่ำเสมอ ควรล็อกการเติมสีแบบทึบและการจัดรูปแบบข้อความในระดับที่ต้องการ
การส่งออกเป็น PDF/PNG จะรักษาสีสาขาที่กำหนดเองและการตั้งค่าป้ายไว้หรือไม่?
ใช่ เมื่อส่งออกงานพรีเซนเทชั่น การตั้งค่าแผนภูมิ (การเติมสี, ป้าย) จะถูกเก็บไว้ในรูปแบบผลลัพธ์ เนื่องจาก Aspose.Slides จะเรนเดอร์ด้วยการจัดรูปแบบของแผนภูมิที่ได้กำหนดไว้
ฉันสามารถคำนวณพิกัดจริงของป้าย/อิลิเมนต์สำหรับการวาง overlay แบบกำหนดเองบนแผนภูมิได้หรือไม่?
ใช่ หลังจากที่การจัดวางแผนภูมิได้รับการตรวจสอบแล้ว ค่า X และ Y จริงจะพร้อมใช้งานสำหรับอิลิเมนต์ (เช่น DataLabel) ซึ่งช่วยให้วาง overlay อย่างแม่นยำ