Diagram adat sorozatok kezelése prezentációkban Pythonban
Áttekintés
Egy diagram a megjelenített értékeket tárolhatja munkafüzetcellákban vagy közvetlenül numerikus literálokként. A ChartSeries egy kapcsolódó értékek halmazát képviseli, és minden ChartDataPoint egy pontot jelent ebben a sorozatban. A ChartCategory objektumok biztosítják a sorozatok által megosztott címkéket vagy csoportosítási értékeket. Az alapértelmezett adatokkal létrehozott diagramokban a sorozatnevek, kategóriák és pontértékek a ChartDataCell objektumokat használják a diagram munkafüzetéből.
Egy tipikus kategória diagram esetén az alapértelmezett munkafüzet a 0‑s sort a sorozatneveknek, a 0‑s oszlopot a kategórianévnek, a többi cellát pedig a sorozatértékeknek használja. A ChartDataWorkbook.getCell metódusnak átadott munkalap-, sor- és oszlopindexek nullával kezdődnek. 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 a struktúrát 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 diagrambeállítások három különböző hatókörrel rendelkeznek:
- Sorozatszintű beállítások, például a ChartSeries.getFormat biztosítják az alapértelmezett megjelenést az adott sorozat összes pontjának.
- Adatpont-szintű beállítások, például a ChartDataPoint.getFormat felülírják a sorozat megjelenését egyetlen pont esetén.
- Csoportbeállítások a kompatibilis sorozatokra vonatkoznak, amelyek ugyanahhoz a ChartSeriesGroup tartoznak. A csoportot a ChartSeries.getParentSeriesGroup segítségével érheti el, ha például átfedés vagy hézag szélesség beállítására van szükség.
Ha nincs kifejezetten beállítva pont- vagy sorozat-kitöltés, a diagram stílusa és témája határozza meg az automatikus megjelenést. Ha mind a sorozat, mind a pont formázása jelen van, akkor 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 alkalmazásadatokból vagy számításokból származnak, és nem igényelnek munkalapcellahivatkozásokat. Hívja meg 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énybeállítás szabályozza az adott sorozat összes pontértékének forrástípusát. Az egyes pontértékek getDataSourceType metódusa jelzi a kiválasztott típust; ezt a gyűjteménybeállítással változtathatja meg. Worksheet esetén a getAsCell használható a hivatkozott cella eléréséhez. DoubleLiterals esetén a getAsLiteralDouble vagy a setAsLiteralDouble használható a szám közvetlen beolvasásához vagy írásához.
Az alábbi példa egy oszlopdiagramot hoz létre alapértelmezett sorozatokkal és kategóriákkal, majd a számított 10, 20 stb. értékeket az első sorozat meglévő pontjaira rendeli. A prezentációt elmenti, újra megnyitja, és kiírja a tárolt értékeket.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import ChartType, DataSourceType, Presentation, SaveFormat
presentation = Presentation()
try:
slide = presentation.getSlides().get_Item(0)
chart = slide.getShapes().addChart(ChartType.ClusteredColumn, 20, 20, 500, 300)
series = chart.getChartData().getSeries().get_Item(0)
series.getDataPoints().setDataSourceTypeForValues(DataSourceType.DoubleLiterals)
for i in range(series.getDataPoints().size()):
series.getDataPoints().get_Item(i).getValue().setAsLiteralDouble((i + 1) * 10)
presentation.save("numeric_literals.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
reopened_presentation = Presentation("numeric_literals.pptx")
try:
reopened_slide = reopened_presentation.getSlides().get_Item(0)
reopened_chart = reopened_slide.getShapes().get_Item(0)
reopened_series = reopened_chart.getChartData().getSeries().get_Item(0)
for point in reopened_series.getDataPoints():
print(point.getValue().getAsLiteralDouble())
finally:
reopened_presentation.dispose()
A pontérték forrástípusa különálló a ChartData.getDataSourceType beállítástól, amely a diagram belső vagy külső munkafüzetkonfigurációját jelzi. 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óriacímkék, sorozatnevek és a többi sorozat számára. Lásd a Chart Workbook oldalt a munkafüzetkezeléshez.
Szórt és buborékdiagramok esetén használja a setDataSourceTypeForXValues és a setDataSourceTypeForYValues metódusokat, hogy kiválassza a forrásokat a getXValue és a getYValue számára. A buborékdiagramok továbbá a setDataSourceTypeForBubbleSizes metódust használják a getBubbleSize esetében. Minden alkalmazandó forrást állítson DoubleLiterals értékre, mielőtt a setAsLiteralDouble metódussal számértékeket rendelne hozzá.
A diagram sorozat átfedésének beállítása
A ChartSeries.getOverlap megadja, hogy a 2D diagramokban a sávok vagy oszlopok mekkora mértékben fednek át egymást, -100 és 100 százalék között. Ez a beállítás csak olvasható, a szülő sorozatcsoport beállításainak leképezése. A ChartSeriesGroup.setOverlap használatával frissítheti a csoport minden kompatibilis sorozatát. Ez az opció a csoportosított sávok vagy oszlopok megjelenítésére alkalmas diagramtípusoknál; kombinált diagramokban nem befolyásolja a nem kapcsolódó sorozatcsoportokat.
Az alábbi példa beállítja az átfedést annak a csoportnak, amelyik az első sorozatot tartalmazza:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpage.startJVM()
from asposeslides.api import ChartType, Presentation, SaveFormat
first_slide_index = 0
first_series_index = 0
overlap_percent = 30
presentation = Presentation()
try:
slide = presentation.getSlides().get_Item(first_slide_index)
# Az új diagram mintasorozatokat, kategóriákat és értékeket tartalmaz.
chart = slide.getShapes().addChart(ChartType.ClusteredColumn, 20, 20, 500, 200)
series = chart.getChartData().getSeries().get_Item(first_series_index)
series.getParentSeriesGroup().setOverlap(overlap_percent)
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 a ChartSeries.getFormat metódust, hogy az egész sorozatra alapértelmezett kitöltést állítson be. Ha egy pont már rendelkezik kifejezett kitöltéssel, akkor annak a ChartDataPoint.getFormat beállítása felülírja a sorozat kitöltését az adott pontnál.
Az alábbi példa egy tiszta kék kitöltést alkalmaz az első sorozatra:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import ChartType, FillType, Presentation, SaveFormat
Color = jpype.JClass("java.awt.Color")
first_slide_index = 0
first_series_index = 0
presentation = Presentation()
try:
slide = presentation.getSlides().get_Item(first_slide_index)
chart = slide.getShapes().addChart(ChartType.ClusteredColumn, 20, 20, 500, 200)
series = chart.getChartData().getSeries().get_Item(first_series_index)
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 adat-munkafüzetben tárolódik, és általában a jelmagyarázatban jelenik meg. Az alapértelmezett munkafüzetben, amely egy klaszteres oszlopdiagramhoz jön létre, a B1 cella (0‑s sor, 1‑s oszlop) tartalmazza az első sorozat nevét. A következő példában a változók ezt a struktúrát teszik nyilvánvalóvá:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpage.startJVM()
from asposeslides.api import ChartType, Presentation, SaveFormat
first_slide_index = 0
worksheet_index = 0
series_name_row_index = 0
first_series_column_index = 1
presentation = Presentation()
try:
slide = presentation.getSlides().get_Item(first_slide_index)
chart = slide.getShapes().addChart(ChartType.ClusteredColumn, 20, 20, 500, 200)
workbook = chart.getChartData().getChartDataWorkbook()
series_name_cell = workbook.getCell(worksheet_index, series_name_row_index, first_series_column_index)
series_name_cell.setValue("Revenue")
presentation.save("series_name.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
A ChartSeries.getName által már hivatkozott cellát is frissítheti. Ezzel a megközelítéssel nem kell feltételezni egy adott sort és oszlopot egy meglévő diagramon:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import ChartType, Presentation, SaveFormat
first_slide_index = 0
first_series_index = 0
first_name_cell_index = 0
presentation = Presentation()
try:
slide = presentation.getSlides().get_Item(first_slide_index)
chart = slide.getShapes().addChart(ChartType.ClusteredColumn, 20, 20, 500, 200)
series = chart.getChartData().getSeries().get_Item(first_series_index)
series_name_cell = series.getName().getAsCells().get_Item(first_name_cell_index)
series_name_cell.setValue("Revenue")
presentation.save("series_name.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
Az eredmény:

Sorozat létrehozása több cellából származó névvel
Összetett sorozatnév akkor hasznos, ha a termék neve és a jelentési időszak külön munkafüzetcellákban van tárolva. Például a Product A nevű terméket a B1, a 2026 évszámot a C1 cellában egyetlen sorozatnévvé kombinálhatja, miközben a két rész továbbra is a forráscelláira hivatkozik.
Használja a ChartDataWorkbook.getCellCollection metódust a névtartomány lekérdezéséhez, majd adja át ezt a gyűjteményt a ChartSeriesCollection.add metódusnak. A skipHiddenCells argumentum szabályozza, hogy a rejtett cellák benne legyenek-e: True kizárja, False pedig belefoglalja őket. Ez a példa False‑t használ a névtartomány minden cellájának felvételéhez.
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 tartalmazzák; az A2:A3 a kategóriacímkéket, a B2:B3 pedig a numerikus értékeket.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import ChartType, Presentation, SaveFormat
presentation = Presentation()
try:
slide = presentation.getSlides().get_Item(0)
chart = slide.getShapes().addChart(ChartType.ClusteredColumn, 50, 50, 620, 180)
chart.getChartData().getSeries().clear()
chart.getChartData().getCategories().clear()
chart.setLegend(True)
workbook = chart.getChartData().getChartDataWorkbook()
workbook.clear(0)
# Ezek a két cella biztosítja a sorozat nevét.
workbook.getCell(0, 0, 1, "Product A")
workbook.getCell(0, 0, 2, "2026")
name_cells = workbook.getCellCollection("Sheet1!$B$1:$C$1", False)
series = chart.getChartData().getSeries().add(name_cells, ChartType.ClusteredColumn)
# Különálló cellák biztosítják a kategóriákat és a numerikus adatpontokat.
north_category = workbook.getCell(0, 1, 0, "North")
south_category = workbook.getCell(0, 2, 0, "South")
chart.getChartData().getCategories().add(north_category)
chart.getChartData().getCategories().add(south_category)
north_value = workbook.getCell(0, 1, 1, jpype.JInt(120))
south_value = workbook.getCell(0, 2, 1, jpype.JInt(150))
series.getDataPoints().addDataPointForBarSeries(north_value)
series.getDataPoints().addDataPointForBarSeries(south_value)
presentation.save("composite_series_name.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
Az eredményül kapott sorozatnév Product A 2026, a két cellaérték között egy szóközzel. A jelmagyarázat ezt egy bejegyzésként jeleníti meg mindkét oszlophoz. Az alábbi képen látható a végeredmény:

Az automatikus sorozatszín lekérése
A ChartSeries.getAutomaticSeriesColor visszaadja a sorozat indexe és a diagram stílusa alapján számított színt. Ez a szín akkor kerül felhasználásra, amikor a sorozat kitöltése nincs kifejezetten meghatározva. A metódus meghí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 az egyes alapértelmezett sorozatok automatikus színét:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import ChartType, Presentation
first_slide_index = 0
presentation = Presentation()
try:
slide = presentation.getSlides().get_Item(first_slide_index)
chart = slide.getShapes().addChart(ChartType.ClusteredColumn, 20, 20, 500, 200)
series_count = chart.getChartData().getSeries().size()
for series_index in range(series_count):
series = chart.getChartData().getSeries().get_Item(series_index)
automatic_color = series.getAutomaticSeriesColor()
print(f"Series {series_index}: {automatic_color}")
finally:
presentation.dispose()
Példa kimenet az alapértelmezett diagramstílusra:
Series 0: java.awt.Color[r=79,g=129,b=189]
Series 1: java.awt.Color[r=192,g=80,b=77]
Series 2: java.awt.Color[r=155,g=187,b=89]
A pontos színek a diagram stílusától és témájától függenek.
Inverz kitöltőszín beállítása egy diagram sorozathoz
Sáv-, oszlop- és buborék sorozatok esetén a ChartSeries.setInvertIfNegative használható a negatív értékek más kitöltéssel történő megjelenítésére. Állítsa be a sorozat normál kitöltését szilárd színre, engedélyezze az invertálást, és adja meg a negatív érték színét a ChartSeries.getInvertedSolidFillColor segítségével. A negatív számok a munkafüzetben változatlanok maradnak; csak a megjelenített színük változik.
Az alábbi példa az alapértelmezett diagramadatot egy sorozatra cseréli. A 0‑s munkalapsor a sorozatnevet, a 0‑s oszlop a kategórianéveket, az 1‑s oszlop pedig az értékeket tartalmazza:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import ChartType, FillType, Presentation, SaveFormat
Color = jpype.JClass("java.awt.Color")
first_slide_index = 0
worksheet_index = 0
header_row_index = 0
category_column_index = 0
first_series_column_index = 1
first_data_row_index = 1
category_names = ["Category 1", "Category 2", "Category 3"]
series_values = [-20, 50, -30]
presentation = Presentation()
try:
slide = presentation.getSlides().get_Item(first_slide_index)
chart = slide.getShapes().addChart(ChartType.ClusteredColumn, 20, 20, 500, 200)
chart_data = chart.getChartData()
workbook = chart_data.getChartDataWorkbook()
chart_data.getSeries().clear()
chart_data.getCategories().clear()
series_name_cell = workbook.getCell(worksheet_index, header_row_index, first_series_column_index, "Series 1")
chart_type = chart.getType()
series = chart_data.getSeries().add(series_name_cell, chart_type)
for category_index in range(len(category_names)):
data_row_index = first_data_row_index + category_index
category_name = category_names[category_index]
series_value = series_values[category_index]
category_cell = workbook.getCell(worksheet_index, data_row_index, category_column_index, category_name)
chart_data.getCategories().add(category_cell)
value_cell = workbook.getCell(worksheet_index, data_row_index, first_series_column_index, series_value)
series.getDataPoints().addDataPointForBarSeries(value_cell)
automatic_series_color = series.getAutomaticSeriesColor()
series.getFormat().getFill().setFillType(FillType.Solid)
series.getFormat().getFill().getSolidFillColor().setColor(automatic_series_color)
series.setInvertIfNegative(True)
series.getInvertedSolidFillColor().setColor(Color.RED)
presentation.save("inverted_solid_fill_color.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
Az eredmény:

Inverzálást egyetlen pontnál a ChartDataPoint.setInvertIfNegative segítségével is engedélyezheti. Az alábbi példában a sorozat esetében az invertálás ki van kapcsolva, csak a kiválasztott pontnál van engedélyezve, amelyhez negatív érték is van rendelve, hogy a hatás látható legyen:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import ChartType, FillType, Presentation, SaveFormat
Color = jpype.JClass("java.awt.Color")
first_slide_index = 0
first_series_index = 0
target_data_point_index = 2
negative_value = -30
presentation = Presentation()
try:
slide = presentation.getSlides().get_Item(first_slide_index)
chart = slide.getShapes().addChart(ChartType.ClusteredColumn, 20, 20, 500, 200)
series = chart.getChartData().getSeries().get_Item(first_series_index)
automatic_series_color = series.getAutomaticSeriesColor()
series.getFormat().getFill().setFillType(FillType.Solid)
series.getFormat().getFill().getSolidFillColor().setColor(automatic_series_color)
series.getInvertedSolidFillColor().setColor(Color.RED)
series.setInvertIfNegative(False)
data_point = series.getDataPoints().get_Item(target_data_point_index)
data_point.getValue().getAsCell().setValue(negative_value)
data_point.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, anélkül hogy a többi pontot eltávolítaná, állítsa annak a támogatott munkafüzetcelláját None‑ra. Oszlopdiagram esetén a megjelenített érték a ChartDataPoint.getValue metódussal érhető el. Az adatpont ugyanazon kategóriapozícióban marad, de a diagram a beállított üresérték‑kezelésnek megfelelően üresként kezeli.
Az alábbi példa csak a második pontot törli az első sorozatban:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import ChartType, Presentation, SaveFormat
first_slide_index = 0
first_series_index = 0
target_data_point_index = 1
presentation = Presentation()
try:
slide = presentation.getSlides().get_Item(first_slide_index)
chart = slide.getShapes().addChart(ChartType.ClusteredColumn, 20, 20, 500, 200)
series = chart.getChartData().getSeries().get_Item(first_series_index)
data_point = series.getDataPoints().get_Item(target_data_point_index)
data_point.getValue().getAsCell().setValue(None)
presentation.save("clear_data_point_value.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
Szórt diagramok esetén külön X és Y cellák vannak, a buborékdiagramok pedig egy méretcellát is használnak. Csak azt a cellát törölje, amely az eltávolítandó értéket tartalmazza. Ne hívja a ChartDataPointCollection.clear metódust, ha a többi pontot megtartani szeretné, mivel ez a metódus az összes adatpontot eltávolítja a gyűjteményből.
Az üres cellák megjelenítésének szabályozása
Az értékeket tartalmazó rejtett cellák külön esetet jelentenek az üres cellákkal szemben. A rejtett munkalap‑sorok és oszlopok adatainak fel- vagy letiltásához tekintse meg a Include Data from Hidden Rows and Columns oldalt.
Egy üres munkafüzetcellát a hiányzó adatként kezelünk; egy 0‑t tartalmazó cella ismert numerikus értéket jelent. A ChartDataCell.setValue metódust None‑val hívva üres cellát hozhat létre. A numerikus nulla minden esetben nulla marad, függetlenül az üres‑cellakezeléstől.
A Chart.setDisplayBlanksAs metódussal választhatja ki, hogyan jelenjenek meg az üres cellák a diagramon. Ez a beállítás az egész diagramra vonatkozik. Megváltoztatja, hogy a hiányzó értékek hogyan legyenek ábrázolva, anélkül, hogy a munkafüzet‑cellá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, majd minden módhoz elmenti ugyanazt a diagramot. Bemeneti fájlra nincs szükség. A ChartDataWorkbook a 0‑s munkalapot, az 0‑s oszlopot használja a kategóriacímkékhez, az 1‑s oszlopot pedig az értékekhez; a 0‑s sor a sorozatnevét tartalmazza. A végső adatsor 10, 20, empty, 30, 40.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import ChartType, DisplayBlanksAsType, Presentation, SaveFormat
presentation = Presentation()
try:
slide = presentation.getSlides().get_Item(0)
chart = slide.getShapes().addChart(ChartType.LineWithMarkers, 40, 40, 640, 400)
chart_data = chart.getChartData()
workbook = chart_data.getChartDataWorkbook()
chart_data.getSeries().clear()
chart_data.getCategories().clear()
series_name_cell = workbook.getCell(0, 0, 1, "Measurements")
series = chart_data.getSeries().add(series_name_cell, chart.getType())
values = [10, 20, 25, 30, 40]
for i, value in enumerate(values):
category_cell = workbook.getCell(0, i + 1, 0, f"Day {i + 1}")
chart_data.getCategories().add(category_cell)
value_cell = workbook.getCell(0, i + 1, 1, jpype.JInt(value))
series.getDataPoints().addDataPointForLineSeries(value_cell)
# Hagyja a 3. napot igazán üresen, miközben megőrzi a kategóriáját és adatpontját.
workbook.getCell(0, 3, 1).setValue(None)
modes = [DisplayBlanksAsType.Gap, DisplayBlanksAsType.Zero, DisplayBlanksAsType.Span]
mode_names = ["Gap", "Zero", "Span"]
for mode, mode_name in zip(modes, mode_names):
chart.setDisplayBlanksAs(mode)
presentation.save(f"empty_cells_{mode_name}.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 közötti iterálás 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 vonaldiagramnál könnyű összehasonlítani mindhárom módot. Sáv‑ és oszlopdiagramok esetén nincs vonal, amely összekapcsolna egy hiányzó kategóriát, így a Span nem képes a fent látható összekötő szegmenst előállítani; egy hiányzó és egy nulla magasságú oszlop is hasonlóan nézhet ki. Hasonlóan, egy csak jelölőkkel rendelkező szórt diagramnak nincs összekötő vonala. Ne számítson három különböző eredményre minden diagramtípusnál; ellenőrizze a kimenetet a saját típusán.
A sorozat hézagszélességének beállítása
A hézagszélesség a szomszédos sáv‑ vagy oszloptömbök közötti távolságot jelenti, 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 meg a ChartSeriesGroup.setGapWidth metódust egyszer a csoporton. A nagyobb érték több helyet hoz létre a tömbök között; a kisebb érték sűrűbbé teszi őket.
Az alábbi példa módosítja a hézagszélességet, és csak a végső prezentációt menti el:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import ChartType, Presentation, SaveFormat
first_slide_index = 0
first_series_index = 0
gap_width_percent = 30
presentation = Presentation()
try:
slide = presentation.getSlides().get_Item(first_slide_index)
chart = slide.getShapes().addChart(ChartType.StackedColumn, 20, 20, 500, 200)
series = chart.getChartData().getSeries().get_Item(first_series_index)
series.getParentSeriesGroup().setGapWidth(gap_width_percent)
presentation.save("gap_width_30.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
Az eredmény:

GYIK
Mely diagramtípusok támogatják az adat-sorozatokat?
Az összes, a ChartType felsorolásban szereplő diagramtípus használ adatokat, de sorozataik nem mindegyiknek azonos értékszerkezete vagy beállítása. Például a kategóriadiagramok kategóriákat és értékeket, a szórt diagramok X és Y értékeket, a buborékdiagramok pedig buborékméreteket használnak. A sorozattípusnak megfelelő adatpont‑létrehozási módszert kell használni. Az olyan opciók, mint az átfedés és a hézagszélesség, csak kompatibilis sáv‑ vagy oszlopcsoportokra vonatkoznak.
Mi az a diagram‑sorozatcsoport?
A ChartSeriesGroup kompatibilis sorozatokat tartalmaz, amelyek közös csoport‑szintű ábrázolási beállításokat osztanak meg. Egy kombinált diagram több mint egy csoportot 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.
Tartalmaz-e egy újból létrehozott diagram alapértelmezett adatokat?
Igen. Alapértelmezés szerint a ShapeCollection.addChart mintasorozatokat, kategóriákat és értékeket hoz létre. Ezeket a cellákat szerkesztheti, vagy mind a sorozat‑, mind a kategóriagyűjteményt törölheti, mielőtt teljesen saját adatkészletet adna hozzá. Egy túlterhelés segítségével olyan diagram is létrehozható, amely nem tartalmaz alapértelmezett adatot.
Hogyan kapcsolódnak a diagramobjektumok a munkafüzetcellákhoz?
A sorozatnevek, kategóriacímkék és adat‑pont értékek a ChartDataWorkbook celláira hivatkoznak. Egy hivatkozott cella módosítása frissíti a megfelelő diagramelemet. Egyedi adat létrehozásakor tartsa összehangoltan a kategória‑sorokat és a sorozat‑érték‑sorokat, hogy minden pont a megfelelő kategória alá legyen ábrázolva.
Hogyan töröljek egy pontot anélkül, hogy az egész sorozatot eltávolítanám?
Állítsa a megfelelő értékcellát None‑ra, hogy a pont kategóriapozíciója üres pontként megmaradjon. A ChartDataPointCollection.clear metódust csak akkor használja, ha valóban az egész sorozat összes pontját el akarja távolítani. Ha a kategóriákat is eltávolítja, frissítse minden sorozatot, hogy az értékek továbbra is a kategória‑gyűjteménnyel legyenek összehangolva.
Hogyan jelennek meg az üres pontok?
Az eredmény a diagram típusától és a Chart.setDisplayBlanksAs beállítástól függ. A támogatott diagramok megjeleníthetik a hiányzókat hézagként, nullaértékként vagy a szomszédos pontok összekapcsolásával. Válassza ki a beállítást, amely a hiányzó adatok jelentését tükrözi a prezentációban. Tekintse meg a Control the Display of Empty Cells részt a teljes példáért és vizuális összehasonlításért.
Hogyan formázzák a negatív értékeket?
A támogatott sáv‑, oszlop‑ és buborék sorozatok esetén hívja meg a ChartSeries.setInvertIfNegative metódust, és állítsa be a ChartSeries.getInvertedSolidFillColor által visszaadott színt. Egy egyedi pont formázását a ChartDataPoint.setInvertIfNegative segítségével felülbírálhatja. Ezek a módszerek a formázást befolyásolják, nem a tárolt numerikus értékeket.
Melyik formázás nyer, ha egy sorozat és egy pont is formázva van?
A kifejezett adat‑pont formázás előnyt élvez az adott pont számára. A többi pont továbbra is a kifejezett sorozatformázást vagy, ha az nincs definiálva, a automatikus diagramstílust és témát használja. A csoportbeállítások, például az átfedés és a hézagszélesség, a elrendezést szabályozzák, és nem felülbírálják a pont‑szintű formázást.
Van korlátozás a diagramban tárolható sorozatok számára?
Az Aspose.Slides nem szab ki különálló, fix sorozatszám‑korlátot. Gyakorlatilag a prezentációfájl korlátai, a rendelkezésre álló memória, a renderelési idő és a diagram olvashatósága határozzák meg a hasznos felső határt.
Mit kell módosítani, ha az oszlopok túl közel vagy túl messze vannak egymástól?
Hívja meg a ChartSeriesGroup.setGapWidth metódust a megfelelő szülő sorozatcsoporton. Növelje az értéket a klaszterek közötti távolság szélesítéséhez, vagy csökkentse a klaszterek közelebb hozatalához.