Hantera diagramdatapetiketter i presentationer med JavaScript
Introduktion
Dataetiketter visar information om diagramserier och enskilda datapunkter, vilket hjälper läsarna att identifiera värden och förstå diagrammet. Denna artikel förklarar hur man formaterar värden, visar procenttal, läser etiketttext, styr etiketter bortom axelns maximum, justerar avståndet mellan kategoriakselsetiketter och placerar pajdiagrametiketter.
Ange dataprecision i diagramdatapetiketter
Använd setNumberFormatOfValues för att formatera serievärden. Detta exempel skapar ett linjediagram med standarddata, visar dess datatabell och aktiverar värdeetiketter för den första serien. Formatet #,##0.00 visar ett tusentalsavgränsare och två decimaler utan att ändra de underliggande värdena.
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();
}
För att formatera de numeriska cellerna i ett diagrammets inbäddade arbetsbok, se Set Custom Number Formats for Workbook Cells. Det exemplet visar också värdeetiketter som följer deras källcellsformat samtidigt som de lagrade numeriska värdena bevaras.
Visa procent som etiketter
För ett staplat kolumndiagram beräknas varje värde som en procentandel av dess kategori totala och texten tilldelas textramen som returneras av getTextFrameForOverriding. Detta exempel använder standarddiagramdata och visar procent med två decimaler i en 8-punkts teckensnitt. Kategorier med en total på noll hoppas över för att undvika division med noll. Beräkna om den anpassade etiketttexten om diagramdata ändras.
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();
}
Ange procentsymbol med diagramdatapetiketter
När värden lagras som bråk, använd setNumberFormat för att visa procent. Skicka false till setNumberFormatLinkedToSource för att tillämpa etikettformatet oberoende av källcellerna.
Detta exempel skapar ett 100 % staplat kolumndiagram med röda och blåa serier över fyra kategorier. Varje par av värden summerar till 1. Etikettformatet 0.0% visar 0.30 som 30.0 %, medan den vertikala axeln använder två decimaler. Båda serierna använder vit, 10‑punkts etiketttext.
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();
}
Läs den faktiska texten för datapetiketter
Använd getActualLabelText för att hämta den text som genereras av en datapetiketts inställningar. Detta är användbart när man extraherar etiketter för rapporter, söker i presentationsinnehåll eller validerar genererade diagram. I exemplet nedan kombinerar standard data label format varje kategorinamn, serienamn och värde. En punkt formaterar sitt värde som procent, och en annan använder anpassad text från 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();
}
Numret som lagras i en datapunkt förblir 0.75, även när dess etikett visar 75 % tillsammans med kategori‑ och serienamn. Anpassad text ersätter den genererade etiketttexten. getActualLabelText returnerar den resulterande etikettsträngen i båda fallen. Kontrollera isVisible separat, som visas ovan, när du vill extrahera endast synliga etiketter.
Styr datapetiketter bortom axelns maximum
När du begränsar ett axelintervall manuellt kan vissa datapunkter överskrida dess maximum. Använd setShowDataLabelsOverMaximum för att styra om deras datapetiketter visas. Denna inställning ändrar etikettsynlighet; den ändrar inte axelintervallet eller de underliggande datavärdena.
Exemplet nedan skapar ett 2D‑klustrat kolumndiagram med värdena 60 och 120. Det skickar false till setAutomaticMaxValue och sätter maximum till 100 med setMaxValue på den vertikala axeln. Den första sliden tillåter etiketter bortom maximum; en kopia av den sliden inaktiverar dem. Båda slids sparas i DataLabelsOverMaximum.pptx.
Aktivera värdeetiketter med setShowValue. Diagramnivåinställningen aktiverar inte värdevisning i sig eller åsidosätter en enskild etikett som har värdevisning inaktiverad. Detta exempel aktiverar värden för hela serien och använder setPosition för att placera etiketter vid den yttre änden av varje kolumn.
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();
}
Följande bilder visar de sparade slids som renderats av Microsoft PowerPoint. Med true är etiketten 120 synlig vid den övre gränsen; med false är den dold. Etiketten 60 förblir synlig, axelmaximum förblir 100, och den andra datapunkten förblir 120 i båda fallen.
| setShowDataLabelsOverMaximum(true) | setShowDataLabelsOverMaximum(false) |
|---|---|
![]() |
![]() |
Chart Type
Detta exempel använder ett 2D‑kolumndiagram med en värdeaxel. Diagram utan värdeaxel, såsom paj‑ och munkdiagram, har inget axelmaximum att begränsa på detta sätt.Ställ in etikettavstånd från en axel
Använd setLabelOffset för att styra avståndet mellan kategoriakselsetiketter och axeln. Värdet är en procentsats av den maximala teckenstorleken för axeletiketterna. Detta exempel skapar ett klustrat kolumndiagram och sätter horisontellt axel etikettavstånd till 500. Denna inställning påverkar kategoriakselsetiketter snarare än etiketter som är knutna till enskilda datapunkter.
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();
}
Justera etikettplacering
I ett pajdiagram justerar du datapetikettarnas positioner för att förbättra avståndet och skapa plats för ledarlinjer.
Detta exempel visar värdet för den första datapunkten, placerar dess etikett utanför sektorn och justerar dess horisontella och vertikala avstånd med setX och setY. Dessa avstånd är relativa till diagrammets bredd respektive höjd.
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();
}

Formatera ledarlinjer
När pajdiagrametiketter sitter utanför sina sektorer hjälper ledarlinjer läsarna att matcha varje värde med rätt sektor. En kontrasterande färg och en något tjockare linje kan göra dessa kopplingar lättare att följa, medan transparens och en streckad stil håller linjerna visuellt diskreta.
Använd getLeaderLinesFormat för att formatera ledarlinjer på seriens datapetikettssamlingsnivå. Inställningarna i series.getLabels().getLeaderLinesFormat().getLine() gäller för samlingen snarare än för enskild etikett.
Detta exempel skapar ett pajdiagram med standarddata, visar värden utanför sektorerna och aktiverar setShowLeaderLines. Det flyttar två etiketter längre bort från sina sektorer med setX och setY avstånd, uttryckt som bråkdelar av diagrammets bredd och höjd. Ingen inmatningspresentation krävs.
Linjens getFillFormat ställer in en solid blå färg med ett alfa‑värde på 191 av 255, vilket ger ungefär 25 % transparens. setWidth sätter tjockleken till 2 punkter, och setDashStyle gör linjen streckad.
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);
// Flytta två etiketter längre bort från sina segment.
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();
}
Aktivering av ledarlinjer garanterar inte att en linje visas för varje etikett. Synligheten beror på etikettplacering och diagrammets layoutbeteende. I detta exempel har de två förflyttade etiketterna synliga ledarlinjer; de etiketter som förblir nära sina sektorer behöver dem inte.
Följande bild visar den sparade FormattedLeaderLines.pptx renderad med Aspose.Slides:

Lägg till flera rader med datapetiketter ovanför ett kolumndiagram
Detta exempel skapar ett kolumndiagram med två rader av datapetiketter ovanför plotområdet. Serie A visar de synliga kolumnerna, medan Serie B och Serie C tillhandahåller de extra etiketterna. Deras kolumner är dolda genom att ta bort fyllning och kontur. Metoden ChartSeriesGroup.setOverlap justerar alla tre serier med samma kategoricentra.
ChartPlotArea inställningarna reserverar utrymme för etikett raderna. Efter Chart.validateChartLayout beräknar standardpositionerna, bevarar DataLabel.setX och DataLabel.setY den horisontella justeringen och tillämpar vertikala avstånd för att ordna etiketterna i två rader. Siffrorna förblir datapetiketter länkade till serievärdena; endast radrubrikerna är separata textformer.
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) {
// Dölj kolumnerna för B och C, men behåll deras datapetiketter.
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);
}
}
// Justera alla tre serier så att de har samma kategoricentra.
chart.getChartData().getSeries().get_Item(0).getParentSeriesGroup().setOverlap(java.newByte(100));
// Använd färre nätlinjer i detta kompakta exempel.
chart.getAxes().getVerticalAxis().setAutomaticMajorUnit(false);
chart.getAxes().getVerticalAxis().setMajorUnit(10);
// Reservera utrymme ovanför diagrammet för två rader med datapetiketter.
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();
// Behåll standard horisontell position. Y är ett offset från
// standardetikettpositionen, uttryckt som en bråkdel av diagramhöjden.
dataLabel.setX(0);
dataLabel.setY(java.newFloat(rowTop - dataLabel.getActualY() / chart.getHeight()));
}
// Endast radrubriken är en separat textform.
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
Hur kan jag förhindra att datapetiketter överlappar i täta diagram?
Kombinera automatisk etikettplacering, ledarlinjer och minskad teckenstorlek; om nödvändigt, dölj vissa fält (till exempel kategorin) eller visa etiketter endast för extrema värden eller nyckelpunkter.
Hur kan jag inaktivera etiketter endast för noll-, negativa eller tomma värden?
Filtrera datapunkter innan du aktiverar etiketter och stäng av visning för värden på 0, negativa värden eller saknade värden enligt en definierad regel.
Hur kan jag säkerställa en konsekvent etikettstil vid export till PDF/bilder?
Sätt explicit teckensnittsfamilj och storlek och verifiera att teckensnittet är tillgängligt i renderingsmiljön för att undvika reservteckensnitt.

