Java を使用した Treemap と Sunburst チャートのデータ ポイントのカスタマイズ

PowerPoint の他の種類のチャートの中で、TreemapSunburst(Sunburst Graph、Sunburst Diagram、Radial Chart、Radial Graph、Multi Level Pie Chart とも呼ばれます)の 2 つの「階層」タイプがあります。これらのチャートは、葉から枝のトップまでツリー構造で階層データを表示します。葉は系列のデータ ポイントで定義され、各次のネストされたグループ化レベルは対応するカテゴリで定義されます。Aspose.Slides for Java を使用すると、Java で Sunburst Chart と Treemap のデータ ポイントをフォーマットできます。

以下は Sunburst Chart の例です。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();
}

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

IChartDataPointLevelsManagerIChartDataPointLevel クラス と IChartDataPoint.getDataPointLevels メソッドが Treemap と Sunburst チャートのデータ ポイントのフォーマットへのアクセスを提供します。
IChartDataPointLevelsManager はマルチレベルカテゴリへのアクセスに使用され、IChartDataPointLevel オブジェクトのコンテナを表します。基本的にはデータ ポイント固有のプロパティが追加された IChartCategoryLevelsManager のラッパーです。
IChartDataPointLevel クラスは、getFormatgetDataLabel の 2 つのメソッドを持ち、対応する設定へのアクセスを提供します。

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

“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” データ ラベルをカテゴリ名ではなくシリーズ名 (“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 はチャートの書式設定を適用した状態でレンダリングします。

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

できます。チャートのレイアウトが確定した後、要素(例: DataLabel)の実際の xy が取得可能です。これにより、オーバーレイの正確な位置決めが可能になります。