C++ を使用したツリーマップおよびサンバーストチャートのデータポイントのカスタマイズ

その他のPowerPointチャートのタイプの中で、2つの「階層」タイプがあります - TreemapSunburst チャート(Sunburst Graph、Sunburst Diagram、Radial Chart、Radial Graph、または Multi Level Pie Chart とも呼ばれます)。これらのチャートは、葉から枝のトップまでツリーとして組織された階層データを表示します。葉は系列データポイントによって定義され、各 subsequent nested grouping level は対応するカテゴリによって定義されます。Aspose.Slides for C++ は、C++ で Sunburst Chart と Treemap のデータポイントをフォーマットすることを可能にします。

Here is a Sunburst Chart, where data in Series1 column define the leaf nodes, while other columns define hierarchical datapoints:

以下は Sunburst Chart で、Series1 列のデータが葉ノードを定義し、他の列が階層データポイントを定義します: todo:image_alt_text

Let’s start with adding a new Sunburst chart to the presentation:

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);

todo:image_alt_text

データポイントのラベルと色を設定

“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());

todo:image_alt_text

データポイントのブランチ色を設定

“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);

todo:image_alt_text

よくある質問

Sunburst/Treemap のセグメントの順序(ソート)を変更できますか?

いいえ。PowerPoint はセグメントを自動的にソートします(通常は値の降順、時計回り)。Aspose.Slides はこの動作をそのまま反映します:順序を直接変更することはできず、データを事前処理することで実現します。

プレゼンテーションのテーマはセグメントやラベルの色にどのように影響しますか?

チャートの色は、明示的に塗りつぶしやフォントを設定しない限り、プレゼンテーションのtheme/palette を継承します。一定の結果を得るためには、必要なレベルで実体塗りつぶしとテキスト書式設定をロックしてください。

PDF/PNG へのエクスポートはカスタムブランチ色やラベル設定を保持しますか?

はい。プレゼンテーションをエクスポートすると、チャート設定(塗りつぶし、ラベル)は出力フォーマットに保持されます。これは Aspose.Slides がチャートの書式設定を適用した状態でレンダリングするためです。

チャート上にカスタムオーバーレイを配置するために、ラベル/要素の実際の座標を計算できますか?

はい。チャートのレイアウトが検証された後、要素(例: DataLabel) の実際の X と実際の Y が利用可能になり、オーバーレイの正確な位置決めに役立ちます。