Beheer grafiekgegevenslabels in presentaties met Java
Introductie
Gegevenslabels op een diagram tonen details over de gegevensreeksen van het diagram of individuele gegevenspunten. Ze stellen lezers in staat om snel de reeksen te identificeren en maken diagrammen bovendien makkelijker te begrijpen.
Gegevensprecisie instellen in diagramgegevenslabels
Deze Java-code laat zien hoe u de gegevensprecisie in een diagramgegevenslabel instelt:
Presentation pres = new Presentation();
try {
IChart chart = pres.getSlides().get_Item(0).getShapes().addChart(ChartType.Line, 50, 50, 450, 300);
chart.setDataTable(true);
chart.getChartData().getSeries().get_Item(0).setNumberFormatOfValues("#,##0.00");
pres.save("output.pptx",SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
Percentage weergeven als labels
Aspose.Slides for Java stelt u in staat om procentlabels op weergegeven diagrammen in te stellen. Deze Java-code demonstreert de werking:
// Maakt een instantie van de Presentation-klasse
Presentation pres = new Presentation();
try {
// Haalt de eerste dia op
ISlide slide = pres.getSlides().get_Item(0);
IChart chart = slide.getShapes().addChart(ChartType.StackedColumn, 20, 20, 400, 400);
IChartSeries series;
double[] total_for_Cat = new double[chart.getChartData().getCategories().size()];
for (int k = 0; k < chart.getChartData().getCategories().size(); k++) {
IChartCategory cat = chart.getChartData().getCategories().get_Item(k);
for (int i = 0; i < chart.getChartData().getSeries().size(); i++) {
total_for_Cat[k] = total_for_Cat[k] + (double) (chart.getChartData().getSeries().get_Item(i).getDataPoints().get_Item(k).getValue().getData());
}
}
double dataPontPercent = 0f;
for (int x = 0; x < chart.getChartData().getSeries().size(); x++) {
series = chart.getChartData().getSeries().get_Item(x);
series.getLabels().getDefaultDataLabelFormat().setShowLegendKey(false);
for (int j = 0; j < series.getDataPoints().size(); j++) {
IDataLabel lbl = series.getDataPoints().get_Item(j).getLabel();
dataPontPercent = (double) ((series.getDataPoints().get_Item(j).getValue().getData())) / (double) (total_for_Cat[j]) * 100;
IPortion port = new Portion();
port.setText(String.format("{0:F2} %.2f", dataPontPercent));
port.getPortionFormat().setFontHeight(8f);
lbl.getTextFrameForOverriding().setText("");
IParagraph para = lbl.getTextFrameForOverriding().getParagraphs().get_Item(0);
para.getPortions().add(port);
lbl.getDataLabelFormat().setShowSeriesName(false);
lbl.getDataLabelFormat().setShowPercentage(false);
lbl.getDataLabelFormat().setShowLegendKey(false);
lbl.getDataLabelFormat().setShowCategoryName(false);
lbl.getDataLabelFormat().setShowBubbleSize(false);
}
}
// Slaat de presentatie met het diagram op
pres.save("output.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
Procentteken instellen bij diagramgegevenslabels
Deze Java-code laat zien hoe u het procentteken voor een diagramgegevenslabel instelt:
// Maakt een instantie van de Presentation-klasse
Presentation pres = new Presentation();
try {
// Haalt een referentie naar een dia op via de index
ISlide slide = pres.getSlides().get_Item(0);
// Maakt het PercentsStackedColumn-diagram op een dia
IChart chart = slide.getShapes().addChart(ChartType.PercentsStackedColumn, 20, 20, 500, 400);
// Stelt NumberFormatLinkedToSource in op false
chart.getAxes().getVerticalAxis().setNumberFormatLinkedToSource(false);
chart.getAxes().getVerticalAxis().setNumberFormat("0.00%");
chart.getChartData().getSeries().clear();
int defaultWorksheetIndex = 0;
// Haalt het werkblad met diagramgegevens op
IChartDataWorkbook workbook = chart.getChartData().getChartDataWorkbook();
// Voeg nieuwe reeks toe
IChartSeries series = chart.getChartData().getSeries().add(workbook.getCell(defaultWorksheetIndex, 0, 1, "Reds"), chart.getType());
series.getDataPoints().addDataPointForBarSeries(workbook.getCell(defaultWorksheetIndex, 1, 1, 0.30));
series.getDataPoints().addDataPointForBarSeries(workbook.getCell(defaultWorksheetIndex, 2, 1, 0.50));
series.getDataPoints().addDataPointForBarSeries(workbook.getCell(defaultWorksheetIndex, 3, 1, 0.80));
series.getDataPoints().addDataPointForBarSeries(workbook.getCell(defaultWorksheetIndex, 4, 1, 0.65));
// Stelt de opvulkleur van de reeks in
series.getFormat().getFill().setFillType(FillType.Solid);
series.getFormat().getFill().getSolidFillColor().setColor(Color.RED);
// Stelt de eigenschappen van LabelFormat in
series.getLabels().getDefaultDataLabelFormat().setShowValue(true);
series.getLabels().getDefaultDataLabelFormat().setNumberFormatLinkedToSource(false);
series.getLabels().getDefaultDataLabelFormat().setNumberFormat("0.0%");
series.getLabels().getDefaultDataLabelFormat().getTextFormat().getPortionFormat().setFontHeight(10);
series.getLabels().getDefaultDataLabelFormat().getTextFormat().getPortionFormat().getFillFormat().setFillType(FillType.Solid);
series.getLabels().getDefaultDataLabelFormat().getTextFormat().getPortionFormat().getFillFormat().getSolidFillColor().setColor(Color.WHITE);
series.getLabels().getDefaultDataLabelFormat().setShowValue(true);
// Voeg nieuwe reeks toe
IChartSeries series2 = chart.getChartData().getSeries().add(workbook.getCell(defaultWorksheetIndex, 0, 2, "Blues"), chart.getType());
series2.getDataPoints().addDataPointForBarSeries(workbook.getCell(defaultWorksheetIndex, 1, 2, 0.70));
series2.getDataPoints().addDataPointForBarSeries(workbook.getCell(defaultWorksheetIndex, 2, 2, 0.50));
series2.getDataPoints().addDataPointForBarSeries(workbook.getCell(defaultWorksheetIndex, 3, 2, 0.20));
series2.getDataPoints().addDataPointForBarSeries(workbook.getCell(defaultWorksheetIndex, 4, 2, 0.35));
// Stelt vultype en -kleur in
series2.getFormat().getFill().setFillType(FillType.Solid);
series2.getFormat().getFill().getSolidFillColor().setColor(Color.BLUE);
series2.getLabels().getDefaultDataLabelFormat().setShowValue(true);
series2.getLabels().getDefaultDataLabelFormat().setNumberFormatLinkedToSource(false);
series2.getLabels().getDefaultDataLabelFormat().setNumberFormat("0.0%");
series2.getLabels().getDefaultDataLabelFormat().getTextFormat().getPortionFormat().setFontHeight(10);
series2.getLabels().getDefaultDataLabelFormat().getTextFormat().getPortionFormat().getFillFormat().setFillType(FillType.Solid);
series2.getLabels().getDefaultDataLabelFormat().getTextFormat().getPortionFormat().getFillFormat().getSolidFillColor().setColor(Color.WHITE);
// Schrijft de presentatie naar schijf
pres.save("SetDataLabelsPercentageSign_out.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
Labelafstand instellen vanaf een as
Deze Java-code laat zien hoe u de labelafstand vanaf een categorische as instelt wanneer u werkt met een diagram dat vanuit assen is getekend:
// Maakt een instantie van de Presentation-klasse
Presentation pres = new Presentation();
try {
// Haalt een referentie naar een dia op
ISlide sld = pres.getSlides().get_Item(0);
// Maakt een diagram op de dia
IChart ch = sld.getShapes().addChart(ChartType.ClusteredColumn, 20, 20, 500, 300);
// Stelt de labelafstand vanaf een as in
ch.getAxes().getHorizontalAxis().setLabelOffset(500);
// Schrijft de presentatie naar schijf
pres.save("output.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
Labelpositie aanpassen
Wanneer u een diagram maakt dat geen as gebruikt, zoals een cirkeldiagram, kunnen de gegevenslabels van het diagram te dicht bij de rand komen te liggen. In dat geval moet u de positie van het gegevenslabel aanpassen zodat de verbindingslijnen duidelijk worden weergegeven.
Deze Java-code laat zien hoe u de labelpositie in een cirkeldiagram aanpast:
Presentation pres = new Presentation();
try {
IChart chart = pres.getSlides().get_Item(0).getShapes().addChart(ChartType.Pie, 50, 50, 200, 200);
IChartSeriesCollection series = chart.getChartData().getSeries();
IDataLabel label = series.get_Item(0).getLabels().get_Item(0);
label.getDataLabelFormat().setShowValue(true);
label.getDataLabelFormat().setPosition(LegendDataLabelPosition.OutsideEnd);
label.setX(0.71f);
label.setY(0.04f);
pres.save("pres.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}

FAQ
Hoe kan ik voorkomen dat gegevenslabels overlappen in dichte diagrammen?
Combineer automatische labelplaatsing, verbindingslijnen en een verkleinde lettergrootte; verberg indien nodig enkele velden (bijvoorbeeld de categorie) of toon labels alleen voor extreme/sleutelpunten.
Hoe kan ik labels uitschakelen alleen voor nul-, negatieve of lege waarden?
Filter gegevenspunten voordat u labels inschakelt en schakel de weergave uit voor waarden van 0, negatieve waarden of ontbrekende waarden volgens een vaste regel.
Hoe kan ik een consistente labelstijl garanderen bij het exporteren naar PDF/afbeeldingen?
Stel lettertypen (familie, grootte) expliciet in en controleer of het lettertype beschikbaar is aan de renderkant om terugvallen te voorkomen.