Diagramadat-sorozatok kezelése Android prezentációkban
Áttekintés
A diagram tárolhatja a ábrázolt értékeket a munkafüzet celláiban vagy közvetlenül numerikus literálokként. Egy IChartSeries egy kapcsolódó értékkészletet képvisel, és minden IChartDataPoint egy pontot jelöl ebben a sorozatban. Az IChartCategory objektumok a sorozatok által megosztott címkéket vagy csoportosítási értékeket biztosítják. Az alapértelmezett adatokkal létrehozott diagramokban a sorozatneveket, kategóriákat és pontértékeket IChartDataCell objektumokból veszik a diagram munkafüzetéből.
Egy tipikus kategória diagram esetén az alapértelmezett munkafüzet a 0. sort használja a sorozatneveknek, a 0. oszlopot a kategória neveknek, a maradék cellákat pedig a sorozatértékeknek. A IChartDataWorkbook.getCell metódusnak átadott munkalap, sor és oszlop indexek 0‑alapúak. Ez a felépítés hasznos, ha alapértelmezett adatokkal hoz létre diagramot, de ne feltételezze, hogy minden meglévő diagram ezt használja. Betöltött prezentáció esetén vizsgálja meg a sorozatok, kategóriák és adatpontok által hivatkozott cellákat, mielőtt a munkafüzet értékeit módosítaná.
A diagram beállítások három különböző hatókörrel rendelkeznek:
- Sorozatszintű beállítások, például az IChartSeries.getFormat alapértelmezett megjelenést adnak egy sorozat összes pontjához.
- Adatpont‑szintű beállítások, például az IChartDataPoint.getFormat felülírják a sorozat megjelenését egy pont esetében.
- Csoportbeállítások alkalmazandók kompatibilis sorozatokra, amelyek ugyanahhoz az IChartSeriesGroup csoporthoz tartoznak. A csoportot a IChartSeries.getParentSeriesGroup segítségével érheti el, amikor például átfedés vagy hézag szélesség beállítására van szükség.
Ha nincs kifejezetten pont‑ vagy sorozat‑kitöltés meghatározva, a diagram stílusa és sablonja határozza meg a automatikus megjelenést. Ha mind a sorozat, mind a pont formázása meg van adva, a pont formázása élvez elsőbbséget az adott pontnál.

Sorozatértékek beállítása numerikus literálokkal
Használjon numerikus literálokat, ha a sorozatértékek az alkalmazás adataiból vagy számításaiból származnak, és nincs szükség munkalap cellahivatkozásokra. Hívja a setDataSourceTypeForValues metódust a DataSourceType.DoubleLiterals értékkel, mielőtt minden pont getValue eredményét a setAsLiteralDouble segítségével állítaná be.
A gyűjtemény beállítása szabályozza az adott sorozat összes pont értékének forrástípusát. Egy pont értékének getDataSourceType metódusa jelzi a kiválasztott típust; változtassa meg a gyűjtemény beállításán keresztül. Worksheet esetén a getAsCell segítségével érheti el a hivatkozott cellát. DoubleLiterals esetén a getAsLiteralDouble vagy a setAsLiteralDouble használatával olvashatja vagy írhatja a számot közvetlenül.
Az alábbi példa egy oszlopdiagramot hoz létre alapértelmezett sorozatokkal és kategóriákkal, majd a már létező első sorozat pontjaira kiszámított 10, 20, stb. értékeket rendel. A prezentációt elmenti, újra megnyitja, és kiírja a tárolt értékeket.
import com.aspose.slides.*;
Presentation presentation = new Presentation();
try {
ISlide slide = presentation.getSlides().get_Item(0);
IChart chart = slide.getShapes().addChart(ChartType.ClusteredColumn, 20, 20, 500, 300);
IChartSeries series = chart.getChartData().getSeries().get_Item(0);
series.getDataPoints().setDataSourceTypeForValues(DataSourceType.DoubleLiterals);
for (int i = 0; i < series.getDataPoints().size(); i++) {
series.getDataPoints().get_Item(i).getValue().setAsLiteralDouble((i + 1) * 10);
}
presentation.save("numeric_literals.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Presentation reopenedPresentation = new Presentation("numeric_literals.pptx");
try {
ISlide reopenedSlide = reopenedPresentation.getSlides().get_Item(0);
IChart reopenedChart = (IChart) reopenedSlide.getShapes().get_Item(0);
IChartSeries reopenedSeries = reopenedChart.getChartData().getSeries().get_Item(0);
for (IChartDataPoint point : reopenedSeries.getDataPoints()) {
System.out.println(point.getValue().getAsLiteralDouble());
}
} finally {
reopenedPresentation.dispose();
}
A pontérték forrástípusa elkülönül a IChartData.getDataSourceType beállítástól, amely a diagram belső vagy külső munkafüzet‑konfigurációját azonosítja. A numerikus literálok használata önmagában nem távolítja el a beágyazott munkafüzetet. Ebben a példában a munkafüzet továbbra is elérhető a kategória címkék, sorozatnevek és a többi sorozat számára. Lásd a Diagramm munkafüzet oldalt a munkafüzet kezeléséhez.
Szórt és buborék diagramok esetén használja a setDataSourceTypeForXValues és a setDataSourceTypeForYValues metódusokat a getXValue és a getYValue forrásainak kiválasztásához. A buborék diagramok a setDataSourceTypeForBubbleSizes segítségével állítják be a getBubbleSize forrást. Minden alkalmazandó forrást állítson DoubleLiterals‑re, mielőtt a setAsLiteralDouble metódussal számokat rendelne.
A diagram sorozat‑átfedésének beállítása
Az IChartSeries.getOverlap metódus arról tájékoztat, hogy a 2D diagram oszlopai vagy sávjai milyen mértékben fednek át egymást, -100‑tól 100‑ig százalékban. Ez a beállítás csak olvasható, mivel a szülő sorozatcsoport beállításnak felel meg. A IChartSeriesGroup.setOverlap használatával frissítheti a csoport minden kompatibilis sorozatát. Ez a lehetőség olyan diagramtípusokra vonatkozik, amelyek csoportosított oszlopokat vagy sávokat jelenítenek meg; egy kombinációs diagram nem kapcsolódó sorozatcsoportokra nincs hatással.
Az alábbi példa beállítja az első sorozatot tartalmazó csoport átfedését:
import com.aspose.slides.*;
final int firstSlideIndex = 0;
final int firstSeriesIndex = 0;
final byte overlapPercent = 30;
Presentation presentation = new Presentation();
try {
ISlide slide = presentation.getSlides().get_Item(firstSlideIndex);
// Az új diagram mintasorozatokat, kategóriákat és értékeket tartalmaz.
IChart chart = slide.getShapes().addChart(ChartType.ClusteredColumn, 20, 20, 500, 200);
IChartSeries series = chart.getChartData().getSeries().get_Item(firstSeriesIndex);
series.getParentSeriesGroup().setOverlap(overlapPercent);
presentation.save("series_overlap.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Az eredmény:

A sorozat kitöltőszínének módosítása
Használja az IChartSeries.getFormat metódust a teljes sorozat alapértelmezett kitöltésének megadásához. Ha egy pont már rendelkezik kifejezett kitöltéssel, annak a IChartDataPoint.getFormat beállítása felülírja a sorozat kitöltését a pontnál.
Az alábbi példa egy egységes kék kitöltést alkalmaz az első sorozatra:
import com.aspose.slides.*;
import android.graphics.Color;
final int firstSlideIndex = 0;
final int firstSeriesIndex = 0;
Presentation presentation = new Presentation();
try {
ISlide slide = presentation.getSlides().get_Item(firstSlideIndex);
IChart chart = slide.getShapes().addChart(ChartType.ClusteredColumn, 20, 20, 500, 200);
IChartSeries series = chart.getChartData().getSeries().get_Item(firstSeriesIndex);
series.getFormat().getFill().setFillType(FillType.Solid);
series.getFormat().getFill().getSolidFillColor().setColor(Color.BLUE);
presentation.save("series_color.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Az eredmény:

A sorozat nevének módosítása
A sorozat neve a diagram adatmunkafüzetében van tárolva, és általában a jelmagyarázatban jelenik meg. Az alapértelmezett munkafüzetben, amely egy csoportosított oszlopdiagramhoz jön létre, a B1 cella (0. sor, 1. oszlop) az első sorozat nevét tartalmazza. Az alábbi példában a névkonstansok expliciten tükrözik ezt a struktúrát:
import com.aspose.slides.*;
final int firstSlideIndex = 0;
final int worksheetIndex = 0;
final int seriesNameRowIndex = 0;
final int firstSeriesColumnIndex = 1;
Presentation presentation = new Presentation();
try {
ISlide slide = presentation.getSlides().get_Item(firstSlideIndex);
IChart chart = slide.getShapes().addChart(ChartType.ClusteredColumn, 20, 20, 500, 200);
IChartDataWorkbook workbook = chart.getChartData().getChartDataWorkbook();
IChartDataCell seriesNameCell = workbook.getCell(worksheetIndex, seriesNameRowIndex, firstSeriesColumnIndex);
seriesNameCell.setValue("Revenue");
presentation.save("series_name.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
A cellát közvetlenül is frissítheti a IChartSeries.getName által már hivatkozott cellával. Ezzel a megközelítéssel elkerülhető, hogy egy meglévő diagramra egy adott sor és oszlop feltételezésére építsen:
import com.aspose.slides.*;
final int firstSlideIndex = 0;
final int firstSeriesIndex = 0;
final int firstNameCellIndex = 0;
Presentation presentation = new Presentation();
try {
ISlide slide = presentation.getSlides().get_Item(firstSlideIndex);
IChart chart = slide.getShapes().addChart(ChartType.ClusteredColumn, 20, 20, 500, 200);
IChartSeries series = chart.getChartData().getSeries().get_Item(firstSeriesIndex);
IChartDataCell seriesNameCell = series.getName().getAsCells().get_Item(firstNameCellIndex);
seriesNameCell.setValue("Revenue");
presentation.save("series_name.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Az eredmény:

Sorozat létrehozása több cella nevével
Összetett sorozatnév akkor hasznos, ha egy termék neve és egy jelentési időszak külön munkafüzetcellákban van tárolva. Például a Product A B1‑ben és a 2026 C1‑ben egyetlen sorozatnevébe kombinálható, miközben mindkét rész továbbra is a forráscellához van kapcsolva.
Használja az IChartDataWorkbook.getCellCollection metódust a névtartomány lekéréséhez, majd adja át ezt a gyűjteményt a IChartSeriesCollection.add metódusnak. A skipHiddenCells argumentum szabályozza, hogy a rejtett cellák is szerepeljenek‑e: true kizárja őket, false pedig beleveszi. Ebben a példában false‑t használunk, hogy minden cella szerepeljen a névtartományban.
Az alábbi példa egy prezentációt hoz létre egy sorozattal és két adatponttal. A B1:C1 cellák csak a sorozatnevet biztosítják; az A2:A3 a kategóriacímkéket, a B2:B3 pedig a numerikus értékeket.
import com.aspose.slides.*;
Presentation presentation = new Presentation();
try {
ISlide slide = presentation.getSlides().get_Item(0);
IChart chart = slide.getShapes().addChart(ChartType.ClusteredColumn, 50, 50, 620, 180);
chart.getChartData().getSeries().clear();
chart.getChartData().getCategories().clear();
chart.setLegend(true);
IChartDataWorkbook workbook = chart.getChartData().getChartDataWorkbook();
workbook.clear(0);
// Ez a két cella adja a sorozat nevét.
workbook.getCell(0, 0, 1, "Product A");
workbook.getCell(0, 0, 2, "2026");
IChartCellCollection nameCells = workbook.getCellCollection("Sheet1!$B$1:$C$1", false);
IChartSeries series = chart.getChartData().getSeries().add(nameCells, ChartType.ClusteredColumn);
// Külön cellák biztosítják a kategóriákat és a numerikus adatpontokat.
IChartDataCell northCategory = workbook.getCell(0, 1, 0, "North");
IChartDataCell southCategory = workbook.getCell(0, 2, 0, "South");
chart.getChartData().getCategories().add(northCategory);
chart.getChartData().getCategories().add(southCategory);
IChartDataCell northValue = workbook.getCell(0, 1, 1, 120);
IChartDataCell southValue = workbook.getCell(0, 2, 1, 150);
series.getDataPoints().addDataPointForBarSeries(northValue);
series.getDataPoints().addDataPointForBarSeries(southValue);
presentation.save("composite_series_name.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Az eredményül kapott sorozatnév Product A 2026, egy szóközzel elválasztva a két cella értékét. A jelmagyarázat egy bejegyzésként jeleníti meg mindkét oszlopot. Az alábbi kép mutatja az eredményt:

Az automatikus sorozat‑kitöltőszín lekérése
Az IChartSeries.getAutomaticSeriesColor metódus a sorozat indexe és a diagram stílusa alapján számított Android ARGB színt egész számként adja vissza. Ez a szín akkor használatos, amikor a sorozat kitöltése nincs kifejezetten meghatározva. A metódus hívása csak a számított színt olvassa, nem állít be új kitöltést.
Az alábbi példa kiírja minden alapértelmezett sorozat automatikus színértékét:
import com.aspose.slides.*;
final int firstSlideIndex = 0;
Presentation presentation = new Presentation();
try {
ISlide slide = presentation.getSlides().get_Item(firstSlideIndex);
IChart chart = slide.getShapes().addChart(ChartType.ClusteredColumn, 20, 20, 500, 200);
int seriesCount = chart.getChartData().getSeries().size();
for (int seriesIndex = 0; seriesIndex < seriesCount; seriesIndex++) {
IChartSeries series = chart.getChartData().getSeries().get_Item(seriesIndex);
int automaticColor = series.getAutomaticSeriesColor();
System.out.println("Series " + seriesIndex + ": " + automaticColor);
}
} finally {
presentation.dispose();
}
A pontos egész szám értékek a diagram stílusától és sablonjától függenek.
Invertált kitöltőszín beállítása diagram sorozathoz
Oszlop, sáv és buborék sorozatok esetén az IChartSeries.setInvertIfNegative használatával a negatív értékek más kitöltéssel jeleníthetők meg. Állítsa be a normál sorozatkitöltést szilárdra, engedélyezze az invertálást, és adja meg a negatív érték színét az IChartSeries.getInvertedSolidFillColor segítségével. A negatív számok a munkafüzetben érintetlenül maradnak; csak a megjelenített színük változik.
Az alábbi példa egy sorozattal helyettesíti az alapértelmezett diagramadatot. A munkalap 0. sora a sorozatnevet, a 0. oszlop a kategória neveket, az 1. oszlop pedig az értékeket tartalmazza:
import com.aspose.slides.*;
import android.graphics.Color;
final int firstSlideIndex = 0;
final int worksheetIndex = 0;
final int headerRowIndex = 0;
final int categoryColumnIndex = 0;
final int firstSeriesColumnIndex = 1;
final int firstDataRowIndex = 1;
String[] categoryNames = { "Category 1", "Category 2", "Category 3" };
int[] seriesValues = { -20, 50, -30 };
Presentation presentation = new Presentation();
try {
ISlide slide = presentation.getSlides().get_Item(firstSlideIndex);
IChart chart = slide.getShapes().addChart(ChartType.ClusteredColumn, 20, 20, 500, 200);
IChartData chartData = chart.getChartData();
IChartDataWorkbook workbook = chartData.getChartDataWorkbook();
chartData.getSeries().clear();
chartData.getCategories().clear();
IChartDataCell seriesNameCell = workbook.getCell(worksheetIndex, headerRowIndex, firstSeriesColumnIndex, "Series 1");
int chartType = chart.getType();
IChartSeries series = chartData.getSeries().add(seriesNameCell, chartType);
for (int categoryIndex = 0; categoryIndex < categoryNames.length; categoryIndex++) {
int dataRowIndex = firstDataRowIndex + categoryIndex;
String categoryName = categoryNames[categoryIndex];
int seriesValue = seriesValues[categoryIndex];
IChartDataCell categoryCell = workbook.getCell(worksheetIndex, dataRowIndex, categoryColumnIndex, categoryName);
chartData.getCategories().add(categoryCell);
IChartDataCell valueCell = workbook.getCell(worksheetIndex, dataRowIndex, firstSeriesColumnIndex, seriesValue);
series.getDataPoints().addDataPointForBarSeries(valueCell);
}
int automaticSeriesColor = series.getAutomaticSeriesColor();
series.getFormat().getFill().setFillType(FillType.Solid);
series.getFormat().getFill().getSolidFillColor().setColor(automaticSeriesColor);
series.setInvertIfNegative(true);
series.getInvertedSolidFillColor().setColor(Color.RED);
presentation.save("inverted_solid_fill_color.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Az eredmény:

Inverziót egyetlen pontnál az IChartDataPoint.setInvertIfNegative segítségével is engedélyezheti. Az alábbi példában a sorozatra vonatkozó invertálás ki van kapcsolva, csak a kiválasztott pontnál van bekapcsolva, amelynek negatív értéket is adunk a hatás láthatósága érdekében:
import com.aspose.slides.*;
import android.graphics.Color;
final int firstSlideIndex = 0;
final int firstSeriesIndex = 0;
final int targetDataPointIndex = 2;
final int negativeValue = -30;
Presentation presentation = new Presentation();
try {
ISlide slide = presentation.getSlides().get_Item(firstSlideIndex);
IChart chart = slide.getShapes().addChart(ChartType.ClusteredColumn, 20, 20, 500, 200);
IChartSeries series = chart.getChartData().getSeries().get_Item(firstSeriesIndex);
int automaticSeriesColor = series.getAutomaticSeriesColor();
series.getFormat().getFill().setFillType(FillType.Solid);
series.getFormat().getFill().getSolidFillColor().setColor(automaticSeriesColor);
series.getInvertedSolidFillColor().setColor(Color.RED);
series.setInvertIfNegative(false);
IChartDataPoint dataPoint = series.getDataPoints().get_Item(targetDataPointIndex);
dataPoint.getValue().getAsCell().setValue(negativeValue);
dataPoint.setInvertIfNegative(true);
presentation.save("data_point_invert_color_if_negative.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Egy adott adatpont értékének törlése
Egy pont üresen hagyásához, a többi pontot nem érintve, állítsa a mögöttes munkafüzetcellát null‑ra. Oszlopdiagram esetén a ábrázolt érték a IChartDataPoint.getValue metódussal érhető el. Az adatpont ugyanazon kategóriapozícióban marad, de a diagram a beállított üres‑érték opció szerint a pontot üresnek tekinti.
Az alábbi példa csak a második pontot törli az első sorozatban:
import com.aspose.slides.*;
final int firstSlideIndex = 0;
final int firstSeriesIndex = 0;
final int targetDataPointIndex = 1;
Presentation presentation = new Presentation();
try {
ISlide slide = presentation.getSlides().get_Item(firstSlideIndex);
IChart chart = slide.getShapes().addChart(ChartType.ClusteredColumn, 20, 20, 500, 200);
IChartSeries series = chart.getChartData().getSeries().get_Item(firstSeriesIndex);
IChartDataPoint dataPoint = series.getDataPoints().get_Item(targetDataPointIndex);
dataPoint.getValue().getAsCell().setValue(null);
presentation.save("clear_data_point_value.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
A szórt diagramok külön X és Y cellákat használnak, a buborék diagramok méretcellát is. Csak azt a cellát törölje, amely a törlendő értéket tartalmazza. Ne hívja a IChartDataPointCollection.clear metódust, ha a többi pontot meg akarja tartani, mert ez a metódus az összes adatpontot eltávolítja a gyűjteményből.
Az üres cellák megjelenítésének vezérlése
A rejtett, de értékkel rendelkező cellák más esetet képeznek, mint az üres cellák. A rejtett munkalapról származó sorok és oszlopok adatainak belefoglalásához tekintse meg a Include Data from Hidden Rows and Columns oldalt.
Egy üres munkafüzetcellát a IChartDataCell.setValue metódussal null‑ra állítva tehet üressé. Egy numerikus nulla továbbra is nulla marad, függetlenül az üres‑cellák beállításától.
Az IChart.setDisplayBlanksAs metódussal választhatja ki, hogyan jelenjenek meg az üres cellák. Ez a beállítás az egész diagramra vonatkozik, és úgy módosítja, hogy a hiányzó értékek hogyan kerülnek ábrázolásra, anélkül, hogy az üres munkafüzetcellát nullával vagy interpolált értékkel töltené fel.
Az alábbi önálló példa egy vonaldiagramot hoz létre egy sorozattal, a 3. nap értékét törli, és minden módhoz elmenti a diagramot. Bemeneti fájlra nincs szükség. A IChartDataWorkbook a 0. munkalapot, az 0. oszlopot használja a kategória címkékhez, az 1. oszlopot az értékekhez; a 0. sor a sorozat nevet tartalmazza. A végső adatsor 10, 20, empty, 30, 40.
import com.aspose.slides.*;
Presentation presentation = new Presentation();
try {
ISlide slide = presentation.getSlides().get_Item(0);
IChart chart = slide.getShapes().addChart(ChartType.LineWithMarkers, 40, 40, 640, 400);
IChartData chartData = chart.getChartData();
IChartDataWorkbook workbook = chartData.getChartDataWorkbook();
chartData.getSeries().clear();
chartData.getCategories().clear();
IChartDataCell seriesNameCell = workbook.getCell(0, 0, 1, "Measurements");
IChartSeries series = chartData.getSeries().add(seriesNameCell, chart.getType());
int[] values = { 10, 20, 25, 30, 40 };
for (int i = 0; i < values.length; i++) {
IChartDataCell categoryCell = workbook.getCell(0, i + 1, 0, "Day " + (i + 1));
chartData.getCategories().add(categoryCell);
IChartDataCell valueCell = workbook.getCell(0, i + 1, 1, values[i]);
series.getDataPoints().addDataPointForLineSeries(valueCell);
}
// Hagyd a 3. napot valóban üresen, miközben megtartod a kategóriáját és az adatpontját.
workbook.getCell(0, 3, 1).setValue(null);
int[] modes = { DisplayBlanksAsType.Gap, DisplayBlanksAsType.Zero, DisplayBlanksAsType.Span };
String[] modeNames = { "Gap", "Zero", "Span" };
for (int i = 0; i < modes.length; i++) {
chart.setDisplayBlanksAs(modes[i]);
presentation.save("empty_cells_" + modeNames[i] + ".pptx", SaveFormat.Pptx);
}
} finally {
presentation.dispose();
}
Minden kimeneti fájl a mentés előtt beállított módot tárolja: empty_cells_Gap.pptx, empty_cells_Zero.pptx és empty_cells_Span.pptx. Ha csak egy verziót szeretne menteni, állítsa be a kívánt módot, és egyszer mentse a prezentációt a módok ismétlése helyett.
Az alábbi összehasonlítás ugyanazt az adatot mutatja mindhárom fájlban. A 3. nap minden esetben üres a munkafüzetben:

A látható hatás a diagram típusától függ. Egy vonaldiagram esetén mindhárom mód könnyen összehasonlítható. Az oszlop- és sávdiagramoknak nincs vonala, amely összekötné a hiányzó kategóriát, így a Span nem tudja létrehozni a fenti összekötő szegmenst; egy hiányzó oszlop és egy nulla magaságú oszlop is hasonlóan nézhet ki. Hasonlóképpen, a csak jelölőket tartalmazó szórt diagramnak nincs összekötő vonala. Ne várjon három különböző eredményt minden diagramtípusnál; ellenőrizze a kimenetet a használt típus esetén.
A sorozat hézag szélességének beállítása
A hézag szélessége a szomszédos sáv‑ vagy oszlopklaszterek közötti térköz, a sáv vagy oszlop szélességének százalékában kifejezve. Az átfedéshez hasonlóan ez a szülő sorozatcsoporthoz tartozik, nem egyetlen sorozathoz. Hívja egyszer a IChartSeriesGroup.setGapWidth metódust a csoportra. A nagyobb érték nagyobb távolságot hoz létre a klaszterek között; a kisebb érték sűrűbb elrendezést eredményez.
Az alábbi példa módosítja a hézag szélességét, és csak a végső prezentációt menti el:
import com.aspose.slides.*;
final int firstSlideIndex = 0;
final int firstSeriesIndex = 0;
final int gapWidthPercent = 30;
Presentation presentation = new Presentation();
try {
ISlide slide = presentation.getSlides().get_Item(firstSlideIndex);
IChart chart = slide.getShapes().addChart(ChartType.StackedColumn, 20, 20, 500, 200);
IChartSeries series = chart.getChartData().getSeries().get_Item(firstSeriesIndex);
series.getParentSeriesGroup().setGapWidth(gapWidthPercent);
presentation.save("gap_width_30.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Az eredmény:

GYIK
Mely diagramtípusok támogatják a adat sorozatokat?
Az összes olyan diagramtípus, amelyet a ChartType felsorolás tartalmaz, használ diagramadatokat, de sorozataik nem minden esetben rendelkeznek ugyanazzal az értékszerkezettel vagy beállításokkal. Például a kategória diagramok kategóriákat és értékeket, a szórt diagramok X és Y értékeket, a buborék diagramok pedig buborékméreteket használnak. A sorozattípusnak megfelelő adatpont‑létrehozó metódust kell alkalmazni. Az olyan opciók, mint az átfedés és a hézag szélesség, csak kompatibilis sáv‑ vagy oszlopcsoportokra vonatkoznak.
Mi az a diagram sorozatcsoport?
Egy IChartSeriesGroup kompatibilis sorozatokat tartalmaz, amelyek a csoport‑szintű ábrázolási beállításokat osztják meg. Egy kombinációs diagram több csoportot is tartalmazhat, így egy sorozaton keresztül elért csoport módosítása nem feltétlenül változtatja meg a diagram minden sorozatát.
Egy újból létrehozott diagram alapértelmezett adatokat tartalmaz?
Igen. Alapértelmezés szerint az IShapeCollection.addChart metódus mintasorozatokat, kategóriákat és értékeket hoz létre. Ezeket a cellákat szerkesztheti, vagy törölheti a sorozat‑ és kategória‑gyűjteményeket, mielőtt teljesen saját adatkészletet adna hozzá. Egy túlterhelés segítségével diagramot is létrehozhat alapértelmezett adatok nélkül.
Hogyan kapcsolódnak a diagram objektumok a munkafüzetcellákhoz?
A sorozatnevek, kategória címkék és adatpont‑értékek egy IChartDataWorkbook celláira hivatkoznak. Egy hivatkozott cella módosítása frissíti a megfelelő diagramelemet. Egyedi adat felépítésekor tartsa a kategória sorokat és a sorozat‑érték sorokat összehangoltan, hogy minden pont a kívánt kategória alatt legyen ábrázolva.
Hogyan töröljek egy pontot a teljes sorozat helyett?
Állítsa a megfelelő értékcellát null‑ra, így a pont kategória pozíciója üres pontként marad. A IChartDataPointCollection.clear metódust csak akkor használja, ha az adott sorozat összes pontját el akarja távolítani. Ha a kategóriákat is eltávolítja, frissítse minden sorozatot, hogy értékeik a kategória‑gyűjteménnyel igazodva maradjanak.
Hogyan jelennek meg az üres pontok?
Az eredmény a diagram típusától és a IChart.setDisplayBlanksAs által beállított értéktől függ. A támogatott diagramok megjeleníthetik a hiányzókat hézagként, nullaként vagy a szomszédos pontok összekapcsolásával. Válassza ki a jelentésnek leginkább megfelelő beállítást a prezentációjában. Tekintse meg a Üres cellák megjelenítésének vezérlése részt a teljes példáért és vizuális összehasonlításért.
Hogyan formázódnak a negatív értékek?
Támogatott sáv-, oszlop- és buborék sorozatok esetén hívja az IChartSeries.setInvertIfNegative metódust, és állítsa be a IChartSeries.getInvertedSolidFillColor által visszaadott színt. Egy egyedi pontnál a IChartDataPoint.setInvertIfNegative metódussal felülbírálhatja a viselkedést. Ezek a metódusok a formázásra hatnak, nem a tárolt numerikus értékekre.
Melyik formázás nyer, ha egy sorozat és egy pont is formázva van?
A kifejezett adatpont‑formázás elsőbbséget élvez az adott pontnál. A többi pont továbbra is az explicit sorozat‑formátumot vagy, ha az nincs definiálva, a automatikus diagramstílust és sablont használja. A csoport‑beállítások, mint az átfedés és a hézag szélesség, elrendezést szabályoznak, és nem pont‑szintű formázási felülbírálások.
Van korlát arra, hogy hány sorozatot tartalmazhat egy diagram?
Az Aspose.Slides nem határoz meg különálló, rögzített sorozatszám‑korlátot. Gyakorlatban a prezentációfájl korlátai, a rendelkezésre álló memória, a renderelési idő és a diagram olvashatósága határozza meg az értelmes határt.
Mit kell módosítani, ha az oszlopok túl közel vagy túl messze vannak egymástól?
Hívja a IChartSeriesGroup.setGapWidth metódust a megfelelő szülő sorozatcsoporton. Növelje az értéket a klaszterek közötti térköz bővítéséhez, vagy csökkentse, ha közelebb szeretné helyezni a klasztereket.