Dostosowywanie punktów danych w wykresach Treemap i Sunburst przy użyciu Javy

Wprowadzenie

Wśród innych typów wykresów PowerPoint istnieją dwa typy „hierarchiczne” – Treemap i Sunburst (znany również jako Sunburst Graph, Sunburst Diagram, Radial Chart, Radial Graph lub Multi Level Pie Chart). Te wykresy wyświetlają dane hierarchiczne zorganizowane jako drzewo – od liści do szczytu gałęzi. Liście są definiowane przez punkty danych serii, a każdy kolejny poziom zagnieżdżonej grupy jest definiowany przez odpowiadającą kategorię. Aspose.Slides for Java umożliwia formatowanie punktów danych wykresów Sunburst i Treemap w Javie.

Oto wykres Sunburst, w którym dane w kolumnie Series1 definiują węzły liści, natomiast inne kolumny definiują punkty danych hierarchicznych:

todo:image_alt_text

Rozpocznijmy od dodania nowego wykresu Sunburst do prezentacji:

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

Jeśli istnieje potrzeba formatowania punktów danych wykresu, powinniśmy użyć następujących:

IChartDataPointLevelsManager, IChartDataPointLevel klasy i IChartDataPoint.getDataPointLevels metoda udostępniają dostęp do formatowania punktów danych wykresów Treemap i Sunburst. IChartDataPointLevelsManager służy do uzyskiwania dostępu do wielopoziomowych kategorii – reprezentuje kontener IChartCategoryLevelsManager z właściwościami dodanymi specyficznie dla punktów danych. Klasa IChartDataPointLevel ma dwie metody: getFormat oraz getDataLabel które udostępniają dostęp do odpowiednich ustawień.

Pokaż wartość punktu danych

Pokaż wartość punktu danych “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

Ustaw etykietę i kolor punktu danych

Ustaw etykietę danych “Branch 1”, aby wyświetlała nazwę serii (“Series1”) zamiast nazwy kategorii. Następnie ustaw kolor tekstu na żółty:

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

Ustaw kolor gałęzi punktu danych

Zmień kolor gałęzi “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

Czy mogę zmienić kolejność (sortowanie) segmentów w wykresie Sunburst/Treemap?

Nie. PowerPoint sortuje segmenty automatycznie (zazwyczaj malejąco, zgodnie z ruchem wskazówek zegara). Aspose.Slides odzwierciedla to zachowanie: nie można zmienić kolejności bezpośrednio; można to uzyskać poprzez wstępne przetworzenie danych.

Jak motyw prezentacji wpływa na kolory segmentów i etykiet?

Kolory wykresu dziedziczą theme/palette prezentacji, chyba że jawnie ustawisz wypełnienia/czcionki. Aby uzyskać spójne wyniki, ustal stałe wypełnienia i formatowanie tekstu na odpowiednich poziomach.

Czy eksport do PDF/PNG zachowa niestandardowe kolory gałęzi i ustawienia etykiet?

Tak. Podczas eksportu prezentacji ustawienia wykresu (wypełnienia, etykiety) są zachowywane w formatach wyjściowych, ponieważ Aspose.Slides renderuje wykres z zastosowanym formatowaniem.

Czy mogę obliczyć rzeczywiste współrzędne etykiety/elementu w celu umieszczenia niestandardowej warstwy nakładki nad wykresem?

Tak. Po zweryfikowaniu układu wykresu dostępne są rzeczywiste współrzędne x i y elementów (na przykład DataLabel), co ułatwia precyzyjne pozycjonowanie nakładek.