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

PowerPoint の他のチャート タイプの中で、2 つの「階層」タイプがあります — TreemapSunburst チャート(Sunburst Graph、Sunburst Diagram、Radial Chart、Radial Graph、Multi Level Pie Chart とも呼ばれます)。これらのチャートは、ツリー構造として整理された階層データを表示します — 葉から枝の先端まで。葉はシリーズのデータ ポイントで定義され、以降の各ネストされたグループ化レベルは対応するカテゴリで定義されます。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 はこの動作を反映します。直接順序を変更することはできず、データを事前に処理することで実現します。

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

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

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

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

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

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