Diagram adatcímkék kezelése prezentációkban JavaScript használatával
Bevezetés
Az adatcímkék információkat jelenítenek meg a diagram sorozatairól és az egyes adatpontokról, segítve az olvasókat az értékek azonosításában és a diagram megértésében. Ez a cikk bemutatja, hogyan formázzuk az értékeket, hogyan jelenítsünk meg százalékot, hogyan olvassuk a címkeszöveget, hogyan szabályozzuk a címkéket a tengely maximumán túl, hogyan állítsuk be a kategória tengely címke távolságát, és hogyan helyezzük el a kördiagram címkéit.
Adatcímkék pontosságának beállítása a diagramon
Használja a setNumberFormatOfValues metódust a sorozatértékek formázásához. Ez a példa egy vonaldiagramot hoz létre alapértelmezett adatokkal, megjeleníti annak adat tábláját, és engedélyezi az értékcímkéket az első sorozathoz. A #,##0.00 formátum ezres elválasztót és két tizedesjegyet jelenít meg anélkül, hogy megváltoztatná a mögöttes értékeket.
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();
}
A diagram beágyazott munkafüzetének numerikus celláinak formázásához lásd a Set Custom Number Formats for Workbook Cells oldalt. Az a példa azt is bemutatja, hogy az értékcímkék a forráscellák formátumát követik, miközben megőrzik a tárolt numerikus értékeket.
Százalék megjelenítése címkeként
Halmozott oszlopdiagram esetén számítsa ki minden értéket a kategória összegének százalékaként, és rendelje a szöveget a getTextFrameForOverriding által visszaadott szövegkerethez. Ez a példa az alapértelmezett diagramadatokat használja, és a százalékokat két tizedesjeggyel, 8 pontos betűmérettel jeleníti meg. A nulla összegű kategóriákat kihagyja, hogy elkerülje a nullával való osztást. Újraszámolja az egyéni címkeszöveget, ha a diagram adatai megváltoznak.
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();
}
Százalék jel beállítása a diagram adatcímkéiben
Ha az értékek törtként vannak tárolva, használja a setNumberFormat metódust a százalékok megjelenítéséhez. Adja át a false értéket a setNumberFormatLinkedToSource metódusnak, hogy a címkeformátumot a forráscelláktól függetlenül alkalmazza.
Ez a példa egy 100%-os halmozott oszlopdiagramot hoz létre piros és kék sorozatokkal négy kategóriában. Minden értéppár összege 1. A 0.0% címkeformátum a 0.30-at 30.0%-ként jeleníti meg, míg a függőleges tengely két tizedesjegyet használ. Mindkét sorozat fehér, 10 pontos címkeszöveget használ.
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();
}
Az adatcímkék tényleges szövegének olvasása
Használja a getActualLabelText metódust az adatcímke beállításai által előállított szöveg lekéréséhez. Ez hasznos jelentésekhez címkék kinyerésekor, a prezentáció tartalmának keresésekor vagy a generált diagramok ellenőrzésekor. Az alábbi példában az alapértelmezett data label format egyesíti minden kategórianév, sorozatnév és érték. Az egyik pont értékét százalékos formátumra állítja, a másik egyedi szöveget használ a getTextFrameForOverriding segítségével.
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();
}
Az adatpontban tárolt szám 0.75 marad, még akkor is, ha a címkéje 75%-ként jelenik meg a kategória- és sorozatnevekkel együtt. Az egyedi szöveg felülírja a generált címkeszöveget. A getActualLabelText mindkét esetben a kapott címke karakterláncot adja vissza. Ellenőrizze külön a isVisible‑t, ahogyan fent látható, ha csak a látható címkéket kívánja kinyerni.
Adatcímkék vezérlése a tengely maximumán túl
Ha manuálisan korlátozza egy tengely tartományát, egyes adatpontok meghaladhatják a maximumot. Használja a setShowDataLabelsOverMaximum metódust annak szabályozására, hogy megjelenjenek-e azok adatcímkéi. Ez a beállítás a címke láthatóságát módosítja; nem változtatja meg a tengely tartományát vagy a mögöttes adatértékeket.
Az alábbi példa egy 2D csoportosított oszlopdiagramot hoz létre 60 és 120 értékekkel. A false értéket adja át a setAutomaticMaxValue metódusnak, és a függőleges tengelyen a setMaxValue segítségével 100-ra állítja a maximumot. Az első dia engedélyezi a maximumon túli címkéket; egy másolatban letiltja őket. Mindkét dia a DataLabelsOverMaximum.pptx fájlban kerül mentésre.
Engedélyezze az értékcímkéket a setShowValue metódussal. A diagram szintű beállítás önmagában nem aktiválja az értékek megjelenítését, és nem felülírja egyedi címkék letiltott értékmegjelenítését. Ez a példa engedélyezi az értékeket az egész sorozatra, és a setPosition segítségével a címkéket az oszlopok külső végére helyezi.
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();
}
Az alábbi képek a Microsoft PowerPoint által renderelt mentett diákat mutatják. true esetén a 120 címke látható a felső határon; false esetén rejtett. A 60 címke továbbra is látható, a tengely maximum 100 marad, és a második adatpont 120 marad mindkét esetben.
| setShowDataLabelsOverMaximum(true) | setShowDataLabelsOverMaximum(false) |
|---|---|
![]() |
![]() |
Chart Type
Ez a példa egy 2D oszlopdiagramot használ értéktengellyel. Az olyan diagramok, amelyeknek nincs értéktengelyük, mint például a kör- és gyűrűdiagramok, nem rendelkeznek tengelymaximumsal, amelyet ilyen módon korlátozni lehet.Címke távolság beállítása a tengelytől
Használja a setLabelOffset metódust a kategória tengely címkéi és a tengely közötti távolság szabályozásához. Az érték a tengelycímkék legnagyobb betűméretének százaléka. Ez a példa egy csoportosított oszlopdiagramot hoz létre, és a vízszintes tengely címkeeltolását 500-ra állítja. Ez a beállítás a kategória tengely címkéire vonatkozik, nem az egyes adatpontokhoz csatolt címkékre.
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();
}
Címke helyének módosítása
Egy kördiagramon állítsa be az adatcímkék helyzetét a távolság javítása és a vezetővonalak számára hely biztosítása érdekében.
Ez a példa az első adatpont értékét jeleníti meg, a címkét a szelet kívülre helyezi, és a setX és setY metódusokkal állítja be a vízszintes és függőleges eltolásokat. Ezek az eltolások a diagram szélességéhez és magasságához viszonyítva vannak.
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();
}

Vezetővonalak formázása
Amikor a kördiagram címkéi a szeletek kívül helyezkednek el, a vezetővonalak segítik az olvasókat, hogy az egyes értékeket a megfelelő szeletekkel párosítsák. Egy kontrasztos szín és egy kissé vastagabb vonal megkönnyíti ezeknek a kapcsolatoknak a követését, míg a átlátszóság és a szaggatott stílus vizuálisan kevésbé zavarja a vonalakat.
Használja a getLeaderLinesFormat metódust a vezetővonalak formázásához a sorozat adatcímke-gyűjteményszintjén. A series.getLabels().getLeaderLinesFormat().getLine() beállítások a gyűjteményre vonatkoznak, nem pedig egyedi címkére.
Ez a példa egy alapértelmezett adatú kördiagramot hoz létre, a szeleteken kívül jeleníti meg az értékeket, és engedélyezi a setShowLeaderLines metódust. Két címkét távolabb helyez a szeletektől a setX és setY eltolásokkal, amelyek a diagram szélességének és magasságának törtjeiként vannak megadva. Bemeneti prezentáció nem szükséges.
A vonal getFillFormat metódusa szilárd kék színt állít be 191/255 alfa értékkel, ami körülbelül 25% átlátszóságot eredményez. A setWidth 2 pont vastagságra állítja, a setDashStyle pedig szaggatottá teszi a vonalat.
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);
// Két címkét távolabb helyez a szeleteiktől.
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();
}
A vezetővonalak engedélyezése nem garantálja, hogy minden címkéhez megjelenik vonal. A láthatóság a címke elhelyezésétől és a diagram elrendezési viselkedésétől függ. Ebben a példában a két elmozdított címke látható vezetővonalakkal rendelkezik; a szeletekhez közel maradt címkéknek nincs szükségük rájuk.
Az alábbi kép a mentett FormattedLeaderLines.pptx fájlt mutatja, amelyet az Aspose.Slides renderelt:

Több adatcímke sor hozzáadása az oszlopdiagram felett
Ez a példa egy oszlopdiagramot hoz létre a leképezési terület felett két sor adatcímkével. Az A sorozat a látható oszlopokat jeleníti meg, míg a B és C sorozatok a további címkéket biztosítják. Oszlopaikat a kitöltés és a körvonal eltávolításával rejtik el. A ChartSeriesGroup.setOverlap metódus az összes három sorozatot azonos kategóriaközéppontba igazítja.
A ChartPlotArea beállítások helyet foglalnak a címkesorok számára. A Chart.validateChartLayout az alapértelmezett pozíciókat számítja ki, majd a DataLabel.setX és DataLabel.setY megőrzik a vízszintes igazítást és függőleges eltolásokat alkalmaznak a címkék két sorba rendezéséhez. A számok adatcímkék maradnak, amelyek a sorozatértékekhez vannak kapcsolva; csak a sorfejlécek külön szöveges alakzatok.
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) {
// Rejtse el a B és C oszlopokat, de tartsa meg a hozzájuk tartozó adatcímkéket.
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);
}
}
// Igazítsa a három sorozatot ugyanarra a kategóriaközépre.
chart.getChartData().getSeries().get_Item(0).getParentSeriesGroup().setOverlap(java.newByte(100));
// Használjon kevesebb rácsvonalat ebben a kompakt példában.
chart.getAxes().getVerticalAxis().setAutomaticMajorUnit(false);
chart.getAxes().getVerticalAxis().setMajorUnit(10);
// Tartson helyet a diagram felett két sor adatcímkének.
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();
// Tartsa meg az alapértelmezett vízszintes pozíciót. Az Y egy eltolás a
// alapértelmezett címkepozíciótól, a diagrammagasság hányadosaként kifejezve.
dataLabel.setX(0);
dataLabel.setY(java.newFloat(rowTop - dataLabel.getActualY() / chart.getHeight()));
}
// Csak a sorfejléc egy külön szöveges alakzat.
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();
}

GYIK
Hogyan előzhetem meg az adatcímkék átfedését sűrű diagramokon?
Kombinálja az automatikus címkeelhelyezést, a vezetővonalakat és a kisebb betűméretet; szükség esetén rejtse el bizonyos mezőket (például a kategóriát), vagy csak extrém értékek vagy kulcspontok esetén jelenítse meg a címkéket.
Hogyan tilthatom le a címkéket csak a nulla, negatív vagy üres értékeknél?
Szűrje meg az adatpontokat a címkék engedélyezése előtt, és kapcsolja ki a megjelenítést 0, negatív vagy hiányzó értékek esetén egy meghatározott szabály szerint.
Hogyan biztosíthatom a címkestílus következetességét PDF/képek exportálásakor?
Explicit módon állítsa be a betűcsaládot és méretet, és ellenőrizze, hogy a betűtípus elérhető legyen a renderelési környezetben, hogy elkerülje a helyettesítést.

