Beheer grafiekgegevenslabels in presentaties met JavaScript
Inleiding
Gegevenslabels tonen informatie over grafiekseries en individuele gegevenspunten, waardoor lezers waarden kunnen identificeren en de grafiek begrijpen. Dit artikel legt uit hoe waarden te formatteren, percentages weer te geven, labeltekst te lezen, labels buiten het asmaximum te beheersen, de afstand tussen categoriele aslabels aan te passen en plotlabels in cirkeldiagrammen te positioneren.
Precizie van gegevens instellen in grafiekgegevenslabels
Gebruik setNumberFormatOfValues om serieswaarden te formatteren. Dit voorbeeld maakt een lijngrafiek met standaardgegevens, toont de gegevenstabel en schakelt waardelabels in voor de eerste serie. Het formaat #,##0.00 toont een duizendtallen scheidingsteken en twee decimalen zonder de onderliggende waarden te wijzigen.
const aspose = { slides: require("aspose.slides.via.java") };
const presentation = new aspose.slides.Presentation();
try {
const slide = presentation.getSlides().get_Item(0);
const chart = slide.getShapes().addChart(aspose.slides.ChartType.Line, 50, 50, 450, 300);
chart.setDataTable(true);
const series = chart.getChartData().getSeries().get_Item(0);
series.setNumberFormatOfValues("#,##0.00");
series.getLabels().getDefaultDataLabelFormat().setShowValue(true);
presentation.save("PrecisionOfDatalabels_out.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Om de numerieke cellen in de ingesloten werkmap van een grafiek te formatteren, zie Set Custom Number Formats for Workbook Cells. Dat voorbeeld toont ook waardelabels die de opmaak van hun broncel volgen, terwijl de opgeslagen numerieke waarden behouden blijven.
Percentage weergeven als labels
Voor een gestapelde kolomgrafiek bereken je elke waarde als een percentage van het totale aantal in die categorie en wijs je de tekst toe aan het tekstframe dat wordt teruggegeven door getTextFrameForOverriding. Dit voorbeeld gebruikt de standaardgrafiekgegevens en toont percentages met twee decimalen in een lettertypegrootte van 8 punten. Categorieën met een totaal van nul worden overgeslagen om deling door nul te voorkomen. Herbereken de aangepaste labeltekst als de grafiekgegevens veranderen.
const aspose = { slides: require("aspose.slides.via.java") };
const presentation = new aspose.slides.Presentation();
try {
const slide = presentation.getSlides().get_Item(0);
const chart = slide.getShapes().addChart(aspose.slides.ChartType.StackedColumn, 20, 20, 400, 400);
const categoryTotals = new Array(chart.getChartData().getCategories().size()).fill(0);
for (let k = 0; k < chart.getChartData().getCategories().size(); k++) {
for (let i = 0; i < chart.getChartData().getSeries().size(); i++) {
const series = chart.getChartData().getSeries().get_Item(i);
const pointValue = series.getDataPoints().get_Item(k).getValue().getData();
categoryTotals[k] += Number(pointValue);
}
}
for (let x = 0; x < chart.getChartData().getSeries().size(); x++) {
const series = chart.getChartData().getSeries().get_Item(x);
series.getLabels().getDefaultDataLabelFormat().setShowLegendKey(false);
for (let j = 0; j < series.getDataPoints().size(); j++) {
const label = series.getDataPoints().get_Item(j).getLabel();
if (categoryTotals[j] == 0) {
continue;
}
const pointValue = series.getDataPoints().get_Item(j).getValue().getData();
const dataPointPercent = (Number(pointValue) / categoryTotals[j]) * 100;
const portion = new aspose.slides.Portion();
portion.setText(dataPointPercent.toFixed(2) + " %");
portion.getPortionFormat().setFontHeight(8);
label.getTextFrameForOverriding().setText("");
const paragraph = label.getTextFrameForOverriding().getParagraphs().get_Item(0);
paragraph.getPortions().add(portion);
label.getDataLabelFormat().setShowValue(true);
label.getDataLabelFormat().setShowSeriesName(false);
label.getDataLabelFormat().setShowPercentage(false);
label.getDataLabelFormat().setShowLegendKey(false);
label.getDataLabelFormat().setShowCategoryName(false);
label.getDataLabelFormat().setShowBubbleSize(false);
}
}
presentation.save("DisplayPercentageAsLabels_out.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Procentteken instellen met grafiekgegevenslabels
Wanneer waarden als breuken zijn opgeslagen, gebruik dan setNumberFormat om percentages weer te geven. Geef false door aan setNumberFormatLinkedToSource om de labelopmaak onafhankelijk van de broncellen toe te passen.
Dit voorbeeld maakt een 100 % gestapelde kolomgrafiek met rode en blauwe series over vier categorieën. Elk paar waarden telt op tot 1. Het labelformaat 0.0% toont 0,30 als 30,0 %, terwijl de verticale as twee decimalen gebruikt. Beide series gebruiken witte labeltekst met een grootte van 10 punten.
const aspose = { slides: require("aspose.slides.via.java") };
const java = require("java");
const presentation = new aspose.slides.Presentation();
try {
const slide = presentation.getSlides().get_Item(0);
const chart = slide.getShapes().addChart(aspose.slides.ChartType.PercentsStackedColumn, 20, 20, 500, 400);
chart.getAxes().getVerticalAxis().setNumberFormatLinkedToSource(false);
chart.getAxes().getVerticalAxis().setNumberFormat("0.00%");
chart.getChartData().getSeries().clear();
chart.getChartData().getCategories().clear();
const workbook = chart.getChartData().getChartDataWorkbook();
const worksheetIndex = 0;
for (let i = 0; i < 4; i++) {
const categoryCell = workbook.getCell(worksheetIndex, i + 1, 0, "Category " + (i + 1));
chart.getChartData().getCategories().add(categoryCell);
}
const seriesNames = ["Reds", "Blues"];
const white = java.getStaticFieldValue("java.awt.Color", "WHITE");
const seriesColors = [java.getStaticFieldValue("java.awt.Color", "RED"), java.getStaticFieldValue("java.awt.Color", "BLUE")];
const values = [[0.30, 0.50, 0.80, 0.65], [0.70, 0.50, 0.20, 0.35]];
for (let i = 0; i < seriesNames.length; i++) {
const seriesCell = workbook.getCell(worksheetIndex, 0, i + 1, seriesNames[i]);
const series = chart.getChartData().getSeries().add(seriesCell, chart.getType());
for (let j = 0; j < 4; j++) {
const valueCell = workbook.getCell(worksheetIndex, j + 1, i + 1, values[i][j]);
series.getDataPoints().addDataPointForBarSeries(valueCell);
}
series.getFormat().getFill().setFillType(java.newByte(aspose.slides.FillType.Solid));
series.getFormat().getFill().getSolidFillColor().setColor(seriesColors[i]);
const labelFormat = series.getLabels().getDefaultDataLabelFormat();
labelFormat.setShowValue(true);
labelFormat.setNumberFormatLinkedToSource(false);
labelFormat.setNumberFormat("0.0%");
labelFormat.getTextFormat().getPortionFormat().setFontHeight(10);
labelFormat.getTextFormat().getPortionFormat().getFillFormat().setFillType(java.newByte(aspose.slides.FillType.Solid));
labelFormat.getTextFormat().getPortionFormat().getFillFormat().getSolidFillColor().setColor(white);
}
presentation.save("SetDataLabelsPercentageSign_out.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
presentation.dispose();
}
De werkelijke tekst van gegevenslabels lezen
Gebruik getActualLabelText om de door de instellingen van een gegevenslabel geproduceerde tekst op te halen. Dit is handig bij het extraheren van labels voor rapporten, het doorzoeken van presentaties, of het valideren van gegenereerde grafieken. In het voorbeeld hieronder combineert het standaard data label format elke categorienaam, serienaam en waarde. Eén punt formatteert de waarde als een percentage, en een andere gebruikt aangepaste tekst uit getTextFrameForOverriding.
const aspose = { slides: require("aspose.slides.via.java") };
const presentation = new aspose.slides.Presentation();
try {
const slide = presentation.getSlides().get_Item(0);
const chart = slide.getShapes().addChart(aspose.slides.ChartType.ClusteredColumn, 20, 20, 500, 300);
chart.getChartData().getSeries().clear();
chart.getChartData().getCategories().clear();
const workbook = chart.getChartData().getChartDataWorkbook();
const firstCategoryCell = workbook.getCell(0, 1, 0, "Q1");
chart.getChartData().getCategories().add(firstCategoryCell);
const secondCategoryCell = workbook.getCell(0, 2, 0, "Q2");
chart.getChartData().getCategories().add(secondCategoryCell);
const northSeriesCell = workbook.getCell(0, 0, 1, "North");
const north = chart.getChartData().getSeries().add(northSeriesCell, chart.getType());
const northFirstValueCell = workbook.getCell(0, 1, 1, 0.25);
north.getDataPoints().addDataPointForBarSeries(northFirstValueCell);
const northSecondValueCell = workbook.getCell(0, 2, 1, 0.75);
north.getDataPoints().addDataPointForBarSeries(northSecondValueCell);
const southSeriesCell = workbook.getCell(0, 0, 2, "South");
const south = chart.getChartData().getSeries().add(southSeriesCell, chart.getType());
const southFirstValueCell = workbook.getCell(0, 1, 2, 0.40);
south.getDataPoints().addDataPointForBarSeries(southFirstValueCell);
const southSecondValueCell = workbook.getCell(0, 2, 2, 0.60);
south.getDataPoints().addDataPointForBarSeries(southSecondValueCell);
for (let i = 0; i < chart.getChartData().getSeries().size(); i++) {
const series = chart.getChartData().getSeries().get_Item(i);
const format = series.getLabels().getDefaultDataLabelFormat();
format.setShowCategoryName(true);
format.setShowSeriesName(true);
format.setShowValue(true);
}
north.getLabels().get_Item(1).getDataLabelFormat().setNumberFormatLinkedToSource(false);
north.getLabels().get_Item(1).getDataLabelFormat().setNumberFormat("0%");
south.getLabels().get_Item(0).getTextFrameForOverriding().setText("Reviewed");
for (let i = 0; i < chart.getChartData().getSeries().size(); i++) {
const series = chart.getChartData().getSeries().get_Item(i);
for (let j = 0; j < series.getDataPoints().size(); j++) {
const point = series.getDataPoints().get_Item(j);
const label = point.getLabel();
if (!label.isVisible()) {
continue;
}
console.log("Value: " + point.getValue().getData() + "; label: " + label.getActualLabelText());
}
}
} finally {
presentation.dispose();
}
Het getal dat in een datapunt is opgeslagen blijft 0.75, zelfs wanneer het label 75 % toont samen met de categorie‑ en serienamen. Aangepaste tekst vervangt de gegenereerde labeltekst. getActualLabelText geeft de resulterende label‑string terug in beide gevallen. Controleer isVisible apart, zoals hierboven weergegeven, wanneer je alleen zichtbare labels wilt extraheren.
Gegevenslabels buiten het asmaximum beheren
Wanneer je een asbereik handmatig beperkt, kunnen sommige datapoints het maximum overschrijden. Gebruik setShowDataLabelsOverMaximum om te bepalen of hun gegevenslabels worden weergegeven. Deze instelling wijzigt de zichtbaarheid van het label; hij verandert niet het asbereik of de onderliggende gegevenswaarden.
Het voorbeeld hieronder maakt een 2D gegroepeerde kolomgrafiek met waarden van 60 en 120. Het geeft false door aan setAutomaticMaxValue en stelt het maximum in op 100 met setMaxValue op de verticale as. De eerste dia staat labels toe die boven het maximum liggen; een kopie van die dia schakelt ze uit. Beide dia’s worden opgeslagen in DataLabelsOverMaximum.pptx.
Schakel waardelabels in met setShowValue. De instelling op grafiekniveau schakelt de weergave van waarden niet op zichzelf in en negeert niet een individueel label waarvan de waardeweergave uitgeschakeld is. Dit voorbeeld schakelt waarden in voor de volledige serie en gebruikt setPosition om de labels aan het buitenste uiteinde van elke kolom te plaatsen.
const aspose = { slides: require("aspose.slides.via.java") };
const presentation = new aspose.slides.Presentation();
try {
const slide = presentation.getSlides().get_Item(0);
const chart = slide.getShapes().addChart(aspose.slides.ChartType.ClusteredColumn, 50, 50, 600, 400);
chart.setLegend(false);
chart.getChartData().getSeries().clear();
chart.getChartData().getCategories().clear();
const workbook = chart.getChartData().getChartDataWorkbook();
const firstCategory = workbook.getCell(0, 1, 0, "Within range");
const secondCategory = workbook.getCell(0, 2, 0, "Above maximum");
chart.getChartData().getCategories().add(firstCategory);
chart.getChartData().getCategories().add(secondCategory);
const seriesName = workbook.getCell(0, 0, 1, "Values");
const series = chart.getChartData().getSeries().add(seriesName, chart.getType());
const firstValue = workbook.getCell(0, 1, 1, 60);
const secondValue = workbook.getCell(0, 2, 1, 120);
series.getDataPoints().addDataPointForBarSeries(firstValue);
series.getDataPoints().addDataPointForBarSeries(secondValue);
series.getLabels().getDefaultDataLabelFormat().setShowValue(true);
series.getLabels().getDefaultDataLabelFormat().setPosition(aspose.slides.LegendDataLabelPosition.OutsideEnd);
chart.getAxes().getVerticalAxis().setAutomaticMaxValue(false);
chart.getAxes().getVerticalAxis().setMaxValue(100);
chart.setShowDataLabelsOverMaximum(true);
const secondSlide = presentation.getSlides().addClone(slide);
const secondChart = secondSlide.getShapes().get_Item(0);
secondChart.setShowDataLabelsOverMaximum(false);
presentation.save("DataLabelsOverMaximum.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
presentation.dispose();
}
De volgende afbeeldingen tonen de opgeslagen dia’s die door Microsoft PowerPoint zijn gerenderd. Met true is het label 120 zichtbaar aan de bovenkant; met false is het verborgen. Het label 60 blijft zichtbaar, het asmaximum blijft op 100, en het tweede datapunt blijft 120 in beide gevallen.
| setShowDataLabelsOverMaximum(true) | setShowDataLabelsOverMaximum(false) |
|---|---|
![]() |
![]() |
Chart Type
Dit voorbeeld gebruikt een 2D kolomgrafiek met een waardenas. Grafieken zonder waardenas, zoals taart‑ en donutgrafieken, hebben geen asmaximum dat op deze manier beperkt kan worden.Labelafstand ten opzichte van een as instellen
Gebruik setLabelOffset om de afstand tussen categoriele aslabels en de as te regelen. De waarde is een percentage van de maximale lettergrootte van de aslabels. Dit voorbeeld maakt een gegroepeerde kolomgrafiek en stelt de horizontale aslabeloffset in op 500. Deze instelling beïnvloedt categoriele aslabels in plaats van labels die aan individuele datapoints zijn gekoppeld.
const aspose = { slides: require("aspose.slides.via.java") };
const presentation = new aspose.slides.Presentation();
try {
const slide = presentation.getSlides().get_Item(0);
const chart = slide.getShapes().addChart(aspose.slides.ChartType.ClusteredColumn, 20, 20, 500, 300);
chart.getAxes().getHorizontalAxis().setLabelOffset(500);
presentation.save("SetCategoryAxisLabelDistance_out.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Labellocatie aanpassen
Bij een taartgrafiek pas je de posities van gegevenslabels aan om de afstand te verbeteren en ruimte te maken voor verbindingslijnen.
Dit voorbeeld toont de waarde van het eerste datapunt, plaatst het label buiten het segment, en past de horizontale en verticale offset aan met behulp van setX en setY. Deze offsets zijn respectievelijk relatief ten opzichte van de breedte en de hoogte van de grafiek.
const aspose = { slides: require("aspose.slides.via.java") };
const java = require("java");
const presentation = new aspose.slides.Presentation();
try {
const slide = presentation.getSlides().get_Item(0);
const chart = slide.getShapes().addChart(aspose.slides.ChartType.Pie, 50, 50, 200, 200);
const series = chart.getChartData().getSeries();
const label = series.get_Item(0).getLabels().get_Item(0);
label.getDataLabelFormat().setShowValue(true);
label.getDataLabelFormat().setPosition(aspose.slides.LegendDataLabelPosition.OutsideEnd);
label.setX(java.newFloat(0.71));
label.setY(java.newFloat(0.04));
presentation.save("presentation.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
presentation.dispose();
}

Leidlijnen opmaken
Wanneer taartgrafieklabels buiten hun segmenten staan, helpen leidlijnen de lezers elke waarde aan het juiste segment te koppelen. Een contrasterende kleur en een iets dikkere lijn kunnen deze verbindingen beter leesbaar maken, terwijl transparantie en een gestreepte stijl de lijnen visueel onopvallend houden.
Gebruik getLeaderLinesFormat om leidlijnen op te maken op het niveau van de gegevenslabelcollectie van de serie. De instellingen in series.getLabels().getLeaderLinesFormat().getLine() worden toegepast op de collectie, in plaats van op een individueel label.
Dit voorbeeld maakt een taartgrafiek met standaardgegevens, toont waarden buiten de segmenten, en schakelt setShowLeaderLines in. Het verplaatst twee labels verder van hun segmenten met behulp van offsets via setX en setY, uitgedrukt als breuken van de grafiekbreedte en -hoogte. Er is geen invoerpresentatie vereist.
De getFillFormat van de lijn stelt een effen blauwe kleur in met een alfade waarde van 191 van de 255, wat ongeveer 25 % transparantie oplevert. setWidth stelt de dikte in op 2 punten, en setDashStyle maakt de lijn gestreept.
const aspose = { slides: require("aspose.slides.via.java") };
const java = require("java");
const presentation = new aspose.slides.Presentation();
try {
const slide = presentation.getSlides().get_Item(0);
const chart = slide.getShapes().addChart(aspose.slides.ChartType.Pie, 80, 50, 560, 400);
chart.setLegend(false);
const series = chart.getChartData().getSeries().get_Item(0);
const labelFormat = series.getLabels().getDefaultDataLabelFormat();
labelFormat.setShowValue(true);
labelFormat.setPosition(aspose.slides.LegendDataLabelPosition.OutsideEnd);
labelFormat.setShowLeaderLines(true);
// Verplaats twee labels verder van hun segmenten.
series.getLabels().get_Item(0).setX(java.newFloat(0.10));
series.getLabels().get_Item(0).setY(java.newFloat(-0.05));
series.getLabels().get_Item(1).setX(java.newFloat(-0.10));
series.getLabels().get_Item(1).setY(java.newFloat(0.05));
const line = series.getLabels().getLeaderLinesFormat().getLine();
line.getFillFormat().setFillType(java.newByte(aspose.slides.FillType.Solid));
const lineColor = java.newInstanceSync("java.awt.Color", 30, 90, 160, 191);
line.getFillFormat().getSolidFillColor().setColor(lineColor);
line.setWidth(2);
line.setDashStyle(java.newByte(aspose.slides.LineDashStyle.Dash));
presentation.save("FormattedLeaderLines.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Het inschakelen van leidlijnen garandeert niet dat er voor elk label een lijn verschijnt. Zichtbaarheid hangt af van de labelplaatsing en het lay-outgedrag van de grafiek. In dit voorbeeld hebben de twee verplaatste labels zichtbare leidlijnen; de labels die dicht bij hun segmenten blijven, hebben ze niet nodig.
De volgende afbeelding toont het opgeslagen FormattedLeaderLines.pptx gerenderd met Aspose.Slides:

Meerdere rijen gegevenslabels boven een kolomgrafiek toevoegen
Dit voorbeeld maakt een kolomgrafiek met twee rijen gegevenslabels boven het plotgebied. Serie A toont de zichtbare kolommen, terwijl Serie B en Serie C de bijkomende labels leveren. Hun kolommen worden verborgen door de opvulling en omtrek te verwijderen. De methode ChartSeriesGroup.setOverlap zet alle drie de series op dezelfde categoriebenamingen.
De instellingen van ChartPlotArea reserveren ruimte voor de labelrijen. Na het berekenen van de standaardposities door Chart.validateChartLayout behouden DataLabel.setX en DataLabel.setY de horizontale uitlijning en passen verticale offsets toe om de labels in twee rijen te rangschikken. De getallen blijven gegevenslabels die gekoppeld zijn aan de seriewaarden; alleen de rijkoppen zijn afzonderlijke tekstvormen.
const aspose = { slides: require("aspose.slides.via.java") };
const java = require("java");
const black = java.getStaticFieldValue("java.awt.Color", "BLACK");
const presentation = new aspose.slides.Presentation();
try {
const slide = presentation.getSlides().get_Item(0);
const chart = slide.getShapes().addChart(aspose.slides.ChartType.ClusteredColumn, 40, 40, 640, 200);
chart.setTitle(false);
chart.setLegend(false);
chart.getTextFormat().getPortionFormat().setFontHeight(12);
chart.getChartData().getSeries().clear();
chart.getChartData().getCategories().clear();
const workbook = chart.getChartData().getChartDataWorkbook();
workbook.clear(0);
const categories = ["North", "South", "East", "West"];
const seriesNames = ["Series A", "Series B", "Series C"];
const seriesValues = [[35, 42, 28, 47], [22, 31, 19, 26], [12, 16, 14, 18]];
for (let categoryIndex = 0; categoryIndex < categories.length; categoryIndex++) {
const categoryCell = workbook.getCell(0, categoryIndex + 1, 0, categories[categoryIndex]);
chart.getChartData().getCategories().add(categoryCell);
}
for (let seriesIndex = 0; seriesIndex < seriesNames.length; seriesIndex++) {
const seriesCell = workbook.getCell(0, 0, seriesIndex + 1, seriesNames[seriesIndex]);
const series = chart.getChartData().getSeries().add(seriesCell, aspose.slides.ChartType.ClusteredColumn);
for (let categoryIndex = 0; categoryIndex < categories.length; categoryIndex++) {
const valueCell = workbook.getCell(0, categoryIndex + 1, seriesIndex + 1, seriesValues[seriesIndex][categoryIndex]);
series.getDataPoints().addDataPointForBarSeries(valueCell);
}
if (seriesIndex > 0) {
// Verberg de kolommen van B en C, maar behoud hun gegevenslabels.
series.getFormat().getFill().setFillType(java.newByte(aspose.slides.FillType.NoFill));
series.getFormat().getLine().getFillFormat().setFillType(java.newByte(aspose.slides.FillType.NoFill));
series.getLabels().getDefaultDataLabelFormat().setShowValue(true);
series.getLabels().getDefaultDataLabelFormat().getTextFormat().getPortionFormat().setFontHeight(12);
const labelFill = series.getLabels().getDefaultDataLabelFormat().getTextFormat().getPortionFormat().getFillFormat();
labelFill.setFillType(java.newByte(aspose.slides.FillType.Solid));
labelFill.getSolidFillColor().setColor(black);
series.getLabels().getDefaultDataLabelFormat().setPosition(aspose.slides.LegendDataLabelPosition.InsideBase);
}
}
// Lijn alle drie de series uit op dezelfde categoriacentra.
chart.getChartData().getSeries().get_Item(0).getParentSeriesGroup().setOverlap(java.newByte(100));
// Gebruik minder rasterlijnen voor dit compacte voorbeeld.
chart.getAxes().getVerticalAxis().setAutomaticMajorUnit(false);
chart.getAxes().getVerticalAxis().setMajorUnit(10);
// Reserveer ruimte boven de plot voor twee rijen gegevenslabels.
chart.getPlotArea().setLayoutTargetType(aspose.slides.LayoutTargetType.Inner);
chart.getPlotArea().setX(java.newFloat(0.15));
chart.getPlotArea().setY(java.newFloat(0.32));
chart.getPlotArea().setWidth(java.newFloat(0.80));
chart.getPlotArea().setHeight(java.newFloat(0.48));
chart.validateChartLayout();
for (let seriesIndex = 1; seriesIndex < seriesNames.length; seriesIndex++) {
const series = chart.getChartData().getSeries().get_Item(seriesIndex);
const rowTop = seriesIndex == 1 ? 0.15 : 0.03;
for (let categoryIndex = 0; categoryIndex < categories.length; categoryIndex++) {
const dataLabel = series.getDataPoints().get_Item(categoryIndex).getLabel();
// Behoud de standaard horizontale positie. Y is een offset ten opzichte van
// de standaard labelpositie, uitgedrukt als een fractie van de grafiekhoogte.
dataLabel.setX(0);
dataLabel.setY(java.newFloat(rowTop - dataLabel.getActualY() / chart.getHeight()));
}
// Alleen de rijkop is een apart tekstvorm.
const rowHeading = slide.getShapes().addAutoShape(aspose.slides.ShapeType.Rectangle, chart.getX(), chart.getY() + rowTop * chart.getHeight(), 85, 18);
rowHeading.getFillFormat().setFillType(java.newByte(aspose.slides.FillType.NoFill));
rowHeading.getLineFormat().getFillFormat().setFillType(java.newByte(aspose.slides.FillType.NoFill));
rowHeading.addTextFrame(seriesNames[seriesIndex]);
rowHeading.getTextFrame().getTextFrameFormat().setMarginTop(0);
rowHeading.getTextFrame().getTextFrameFormat().setMarginBottom(0);
const headingFormat = rowHeading.getTextFrame().getParagraphs().get_Item(0).getPortions().get_Item(0).getPortionFormat();
headingFormat.setFontHeight(12);
headingFormat.getFillFormat().setFillType(java.newByte(aspose.slides.FillType.Solid));
headingFormat.getFillFormat().getSolidFillColor().setColor(black);
}
presentation.save("multiple-rows-of-labels.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
presentation.dispose();
}

FAQ
Hoe kan ik voorkomen dat gegevenslabels overlappen in dichte grafieken?
Combineer automatische labelplaatsing, leidlijnen en een kleinere lettergrootte; indien nodig verberg enkele velden (bijvoorbeeld de categorie) of toon labels alleen voor extreme waarden of belangrijke punten.
Hoe kan ik labels alleen uitschakelen voor nul-, negatieve of lege waarden?
Filter datapoints voordat je labels inschakelt en schakel de weergave uit voor waarden van 0, negatieve waarden of ontbrekende waarden volgens een gedefinieerde regel.
Hoe kan ik een consistente labelstijl garanderen bij exporteren naar PDF/afbeeldingen?
Stel de lettertypefamilie en -grootte expliciet in en controleer of het lettertype beschikbaar is in de renderomgeving om fallback te voorkomen.

