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

PowerPoint の他のチャートタイプの中で、2 つの「階層」タイプがあります - TreemapSunburst チャート(Sunburst Graph、Sunburst Diagram、Radial Chart、Radial Graph、または Multi Level Pie Chart とも呼ばれます)。これらのチャートは、ツリー構造として編成された階層データを表示します - 葉から枝のトップまで。葉はシリーズのデータポイントで定義され、各後続のネストされたグループ化レベルは対応するカテゴリで定義されます。Aspose.Slides for C++ は、C++ で Sunburst Chart と Treemap のデータポイントの書式設定を可能にします。

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

プレゼンテーションに新しい 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);
// ...

チャートのデータポイントをフォーマットする必要がある場合は、以下を使用します。

IChartDataPointLevelsManagerIChartDataPointLevel クラスと、IChartDataPoint::get_DataPointLevels() メソッドは、Treemap と Sunburst チャートのデータポイントの書式設定にアクセスする手段を提供します。
IChartDataPointLevelsManager は、マルチレベルカテゴリにアクセスするために使用され、[IChartDataPointLevel] オブジェクトのコンテナを表します。
基本的には、データポイント固有のプロパティが追加された IChartCategoryLevelsManager のラッパーです。
[IChartDataPointLevel] クラスには、get_Format()get_Label() の 2 つのメソッドがあり、対応する設定にアクセスできます。

データポイントの値を表示

“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 も同様の動作を行い、直接順序を変更することはできません。データを前処理して実現してください。

プレゼンテーションのテーマはセグメントとラベルの色にどのように影響しますか?
チャートの色は、明示的に塗りつぶしやフォントを設定しない限り、プレゼンテーションのテーマ/パレットを継承します。一定の結果を得るには、必要なレベルで実線の塗りつぶしとテキスト書式を固定してください。

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

チャート上にカスタムオーバーレイを配置するために、ラベルや要素の実際の座標を計算できますか?
はい。チャートのレイアウトが検証された後、要素(例として DataLabel)の実際の X と実際の Y が取得可能となり、オーバーレイの正確な位置決めに役立ちます。