Diagramtengelyek testreszabása bemutatókban Python segítségével
Áttekintés
Ez a cikk bemutatja, hogyan lehet testre szabni a diagram tengelyeket az Aspose.Slides for Python via .NET segítségével. Tárgyalja a kiszámított tengelyértékeket, a diagram sorok és oszlopok cseréjét, a tengely láthatóságát, a kategória címke- és jelölő távolságokat, a dátumkategóriákat és formázást, a cím forgatását, a tengely elhelyezését, a megjelenítési egységeket és a logaritmikus skálázást.
A függőleges tengely legnagyobb értékeinek lekérése diagramokon
Hozzon létre egy Presentation és adjon hozzá egy területdiagramot az alapértelmezett adatokkal. Hívja meg a validate_chart_layout metódust a kiszámított tengelyértékek olvasása előtt, hogy a diagram elrendezése naprakész legyen.
Olvassa ki a actual_max_value és a actual_min_value a tengelykorlátokhoz, valamint a actual_major_unit és a actual_minor_unit a jelölő távolságokhoz. A actual_major_unit_scale és a actual_minor_unit_scale időegység skálákat adnak, amelyek a dátumtengelyek esetén relevánsak. A példában ezek az értékek helyi változókba kerülnek, majd a diagram mentésre kerül.
import aspose.slides as slides
import aspose.slides.charts as charts
with slides.Presentation() as presentation:
slide = presentation.slides[0]
chart = slide.shapes.add_chart(charts.ChartType.AREA, 100, 100, 500, 350)
chart.validate_chart_layout()
max_value = chart.axes.vertical_axis.actual_max_value
min_value = chart.axes.vertical_axis.actual_min_value
major_unit = chart.axes.vertical_axis.actual_major_unit
minor_unit = chart.axes.vertical_axis.actual_minor_unit
major_unit_scale = chart.axes.vertical_axis.actual_major_unit_scale
minor_unit_scale = chart.axes.vertical_axis.actual_minor_unit_scale
presentation.save("AxisValues_out.pptx", slides.export.SaveFormat.PPTX)
Adatok cseréje tengelyek között
Használja a switch_row_column metódust a sorok és oszlopok cseréjéhez a diagram adatában, ezzel megcserélve a sorozatok és a kategóriák szerepét. Minden korábbi kategória sorozattá, minden korábbi sorozat pedig kategóriává válik. Ez a csoportosítás módját változtatja; nem cseréli fel a vízszintes és függőleges tengelyeket. A példa a set_range metódust használja az alapértelmezett adatok a Sheet1!A1:D5 tartományra kötéséhez, beleértve a fejlécsort és a kategóriaoszlopot, mielőtt sorokat és oszlopokat cserélne. Egy négy sorozatból és három kategóriából álló diagramot ment.
import aspose.slides as slides
import aspose.slides.charts as charts
with slides.Presentation() as presentation:
slide = presentation.slides[0]
chart = slide.shapes.add_chart(charts.ChartType.CLUSTERED_COLUMN, 100, 100, 400, 300)
chart.chart_data.set_range("Sheet1!A1:D5")
chart.chart_data.switch_row_column()
presentation.save("SwitchChartRowColumns_out.pptx", slides.export.SaveFormat.PPTX)
A tengely rajzolási sorrendjének megfordítása
Használja a is_plot_order_reversed metódust egy kategória- vagy értéktengely megfordításához. Például egy vízszintes oszlopdiagram a projekt szakaszait felülről lefelé ugyanabban a sorrendben mutathatja, mint a munkalap: Tervezés, Fejlesztés, Tesztelés. Egy tengely megfordítása megváltoztatja a rajzolás irányát; nem rendezi vagy átrendezi a munkafüzet adatait. Összehasonlításként a switch_row_column metódus megcseréli a sorozatok és a kategóriák szerepét.
A következő példa egy vízszintes oszlopdiagramot hoz létre három szakaszzal és egy sorozattal. Három diát ment: normál sorrend, megfordított kategóriák és megfordított értékek. Minden másolat ugyanazt az adatkészletet használja, és minden másolaton csak egy tengely van megfordítva.
import aspose.slides as slides
import aspose.slides.charts as charts
with slides.Presentation() as presentation:
slide = presentation.slides[0]
chart = slide.shapes.add_chart(charts.ChartType.CLUSTERED_BAR, 50, 40, 620, 320)
chart.has_legend = False
chart.chart_data.categories.clear()
chart.chart_data.series.clear()
workbook = chart.chart_data.chart_data_workbook
workbook.clear(0)
series = chart.chart_data.series.add(charts.ChartType.CLUSTERED_BAR)
stages = ["Planning", "Development", "Testing"]
values = [10, 30, 20]
for i, stage in enumerate(stages):
category_cell = workbook.get_cell(0, i + 1, 0, stage)
chart.chart_data.categories.add(category_cell)
value_cell = workbook.get_cell(0, i + 1, 1, values[i])
series.data_points.add_data_point_for_bar_series(value_cell)
# Dia 2: az első kategóriát felülre jeleníti meg.
category_slide = presentation.slides.add_clone(slide)
category_chart = category_slide.shapes[0]
category_chart.axes.vertical_axis.is_plot_order_reversed = True
# A vízszintes értéktengelyt alul hagyja.
category_chart.axes.vertical_axis.cross_type = charts.CrossesType.MAXIMUM
# Dia 3: csak a vízszintes numerikus skálát fordítja meg.
value_slide = presentation.slides.add_clone(slide)
value_chart = value_slide.shapes[0]
value_chart.axes.horizontal_axis.is_plot_order_reversed = True
presentation.save("ReversedAxes.pptx", slides.export.SaveFormat.PPTX)
A tengely megfordítása a merőleges tengelyt is áthelyezheti a diagram másik oldalára. A cross_type határozza meg, hol keresztezi a másik tengely a konfigurált tengelyt. A 2. dián a MAXIMUM érték beállítása a megfordított kategóriatengelyen a vízszintes értéktengelyt alul tartja. Egy adott metszésponthoz használja a cross_at. Ellenőrizze a metszési beállításokat az irányváltáskor, különösen ha a diagram már rendelkezik egy egyéni metszésponttal. Állítsa vissza az is_plot_order_reversed értéket False-ra a normál rajzolási irány visszaállításához; a metszési beállítások külön kezelendők.
| Normál sorrend (dia 1) | Megfordított kategóriák (dia 2) | Megfordított értékek (dia 3) |
|---|---|---|
![]() |
![]() |
![]() |
| A kategóriák alulról felfelé futnak; az értékek balról jobbra nőnek. | Tervezés, Fejlesztés és Tesztelés felülről lefelé fut. Az értékek és a munkafüzet sorok sorrendje változatlan. | A kategóriák megtartják a normál sorrendjüket; az értékek jobbról balra nőnek. A kategóriatengely a jobb oldalon, nullánál metsződik. |
A függőleges tengely letiltása vonaldiagramoknál
Állítsa a is_visible értékét False-ra a függőleges tengelyen a elrejtéshez. A példa egy alapértelmezett adatokkal rendelkező vonaldiagramot hoz létre, amelyben a függőleges tengely rejtve van.
import aspose.slides as slides
import aspose.slides.charts as charts
with slides.Presentation() as presentation:
slide = presentation.slides[0]
chart = slide.shapes.add_chart(charts.ChartType.LINE, 100, 100, 400, 300)
chart.axes.vertical_axis.is_visible = False
presentation.save("HiddenVerticalAxis.pptx", slides.export.SaveFormat.PPTX)
A vízszintes tengely letiltása vonaldiagramoknál
Állítsa a is_visible értékét False-ra a vízszintes tengelyen a elrejtéshez. A példa egy alapértelmezett adatokkal rendelkező vonaldiagramot hoz létre, amelyben a vízszintes tengely rejtve van.
import aspose.slides as slides
import aspose.slides.charts as charts
with slides.Presentation() as presentation:
slide = presentation.slides[0]
chart = slide.shapes.add_chart(charts.ChartType.LINE, 100, 100, 400, 300)
chart.axes.horizontal_axis.is_visible = False
presentation.save("HiddenHorizontalAxis.pptx", slides.export.SaveFormat.PPTX)
Kategóriatengely módosítása
Állítsa a category_axis_type értékét egy dátum- vagy szöveges kategóriatengely kiválasztásához. Ez a példa az ExistingChart.pptx fájlt igényli, amelynek első diáján első alakzatként szerepel egy diagram, és a kategória cellák numerikus Excel dátumértékeket tartalmaznak. A vízszintes tengelyt dátumtengelyre állítja. A is_automatic_major_unit False, a major_unit 1, és a major_unit_scale a hónapokra állítva, a fő jelölőket egy hónapos intervallumra helyezi.
import aspose.slides as slides
import aspose.slides.charts as charts
with slides.Presentation("ExistingChart.pptx") as presentation:
slide = presentation.slides[0]
chart = slide.shapes[0]
chart.axes.horizontal_axis.category_axis_type = charts.CategoryAxisType.DATE
chart.axes.horizontal_axis.is_automatic_major_unit = False
chart.axes.horizontal_axis.major_unit = 1
chart.axes.horizontal_axis.major_unit_scale = charts.TimeUnitType.MONTHS
presentation.save("ChangeChartCategoryAxis_out.pptx", slides.export.SaveFormat.PPTX)
Kategóriatengely címke intervallumok vezérlése
Amikor egy diagram sok kategóriát tartalmaz, csökkentse a látható tengelycímkék számát a kategóriák vagy adatpontok eltávolítása nélkül. Állítsa a is_automatic_tick_label_spacing False értékre, majd a tick_label_spacing értékét a kívánt kategória intervallumra. Szöveges kategóriák esetén a normál sorrendben a számozás az első kategóriától indul:
| Intervallum | A példában megjelenített címkék |
|---|---|
1 |
Kategória 1, Kategória 2, Kategória 3, … Kategória 24 |
2 |
Kategória 1, Kategória 3, Kategória 5, … Kategória 23 |
3 |
Kategória 1, Kategória 4, Kategória 7, … Kategória 22 |
A 3 intervallum minden harmadik címkét jelenít meg, a megjelenített címkék között két címke rejtve marad. Nem távolítja el a megfelelő oszlopokat. Az automatikus távolság a rendelkezésre álló hely alapján választ intervallumot; nem feltétlenül jeleníti meg az összes címkét.
A jelölő vonalaknak külön vezérlése van. Állítsa a is_automatic_tick_marks_spacing False értékre, és használja a tick_marks_spacing a távolság beállításához. Például az 1 minden kategória intervallumban megtart egy jelölőt, míg a címkék csak minden harmadik kategórián jelennek meg. Állítsa a major_tick_mark egy látható stílusra, hogy láthassa a végeredményt. Bármely automatikus-távolság tulajdonság True-ra állítása lehetővé teszi, hogy a diagram újra a megfelelő intervallumot válassza.
A következő önálló példa 24 kategóriát és egy sorozatot hoz létre, majd három diát ment a CategoryAxisIntervals.pptx fájlba: automatikus távolság, kézi címke távolság független jelölőkkel, és visszaállított automatikus távolság. A két másolat az eredeti diagram adatot tartja meg. Bemutató bemeneti fájlra nincs szükség. A vízszintes címkeszöveg könnyen láthatóvá teszi a sűrűség különbségét.
import aspose.slides as slides
import aspose.slides.charts as charts
with slides.Presentation() as presentation:
slide = presentation.slides[0]
chart = slide.shapes.add_chart(charts.ChartType.CLUSTERED_COLUMN, 30, 40, 660, 320)
chart.has_legend = False
chart.chart_data.categories.clear()
chart.chart_data.series.clear()
workbook = chart.chart_data.chart_data_workbook
workbook.clear(0)
series = chart.chart_data.series.add(charts.ChartType.CLUSTERED_COLUMN)
for i in range(24):
category_cell = workbook.get_cell(0, i + 1, 0, f"Category {i + 1}")
chart.chart_data.categories.add(category_cell)
value_cell = workbook.get_cell(0, i + 1, 1, 10 + i % 6 * 5)
series.data_points.add_data_point_for_bar_series(value_cell)
axis = chart.axes.horizontal_axis
axis.category_axis_type = charts.CategoryAxisType.TEXT
axis.text_format.text_block_format.rotation_angle = 0
axis.text_format.portion_format.font_height = 12
axis.major_tick_mark = charts.TickMarkType.OUTSIDE
axis.is_automatic_tick_label_spacing = True
axis.is_automatic_tick_marks_spacing = True
# Dia 2: minden harmadik címkét mutassa, de minden kategóriához tartson meg egy jelölőt.
manual_slide = presentation.slides.add_clone(slide)
manual_chart = manual_slide.shapes[0]
manual_axis = manual_chart.axes.horizontal_axis
manual_axis.is_automatic_tick_label_spacing = False
manual_axis.tick_label_spacing = 3
manual_axis.is_automatic_tick_marks_spacing = False
manual_axis.tick_marks_spacing = 1
# Dia 3: engedje a diagramnak, hogy újra mindkét intervallumot válassza.
restored_slide = presentation.slides.add_clone(manual_slide)
restored_chart = restored_slide.shapes[0]
restored_chart.axes.horizontal_axis.is_automatic_tick_label_spacing = True
restored_chart.axes.horizontal_axis.is_automatic_tick_marks_spacing = True
presentation.save("CategoryAxisIntervals.pptx", slides.export.SaveFormat.PPTX)
Automatikus távolság (dia 1): Ebben a megjelenítésben minden második kategória címke látható és két sorba törik. Az automatikus eredmény a diagram méretétől, betűtípusától és a renderelőtől függően változhat.

Kézi távolság (dia 2): Minden harmadik címke egy sorban jelenik meg, míg a jelölő vonalak minden kategória intervallumban maradnak. Az összes 24 oszlop, beleértve a címke nélküli oszlopokat is, látható ugyanazzal az értékkel. A 3. dia visszaállítja a fenti automatikus megjelenést.

A megfelelő tengely és intervallum választása
Ezt a kategória-szám intervallumot szöveges kategóriatengelyhez használja, például egy oszlop-, vonal-, terület- vagy sávdiagram kategóriatengelyéhez. Oszlopdiagram esetén ez a vízszintes tengely. Horizontális sávdiagram esetén a kategóriatengely függőleges, így ezeket a beállításokat a vertical_axis -ra alkalmazza. A jelölő távolság a sorozattengelyre is vonatkozik azokban a diagramokban, ahol van ilyen.
Ne használja a kategória címke távolságot az értéktengely numerikus skálájának beállításához. Értéktengelyen a major_unit egy értékkülönbséget határoz meg: például a 10 fő egység 0, 10, 20 stb. jelölőket eredményez, ha a tengely nulláról indul. A 3 kategória címke intervallum a kategória helyeket számolja, függetlenül azok adatértékétől. Szórás- és buborékdiagramok értéktengelyt használnak a szöveges kategóriatengely helyett. Dátumtengely esetén használjon időalapú fő egységeket és skálákat, ahogy a Change a Category Axis szakaszban leírták.
Dátumformátum beállítása a kategóriatengely értékeihez
A példa az alapértelmezett diagramadatokat négy éves értékkel helyettesíti. A dátumok OLE Automation sorozatszámokként tárolódnak az első munkalapon (index 0). Állítsa a category_axis_type dátumtengelyre, kapcsolja ki a is_number_format_linked_to_source, és adja meg a yyyy értéket a number_format számára, hogy a kategória címkék a négyjegyű éveket a cellaformázástól függetlenül jelenítsék meg.
from datetime import date
import aspose.slides as slides
import aspose.slides.charts as charts
with slides.Presentation() as presentation:
slide = presentation.slides[0]
chart = slide.shapes.add_chart(charts.ChartType.LINE, 50, 50, 450, 300)
chart.chart_data.categories.clear()
chart.chart_data.series.clear()
workbook = chart.chart_data.chart_data_workbook
workbook.clear(0)
series = chart.chart_data.series.add(charts.ChartType.LINE)
for i in range(4):
category_date = date(2015 + i, 1, 1)
serial_date = (category_date - date(1899, 12, 30)).days
category_cell = workbook.get_cell(0, i + 1, 0, serial_date)
chart.chart_data.categories.add(category_cell)
value_cell = workbook.get_cell(0, i + 1, 1, i + 1)
series.data_points.add_data_point_for_line_series(value_cell)
chart.axes.horizontal_axis.category_axis_type = charts.CategoryAxisType.DATE
chart.axes.horizontal_axis.is_number_format_linked_to_source = False
chart.axes.horizontal_axis.number_format = "yyyy"
presentation.save("DateAxisFormat.pptx", slides.export.SaveFormat.PPTX)
Forgatási szög beállítása a diagram tengely címéhez
A has_title engedélyezése a függőleges tengelyen, a cím szövegének megadása, majd a rotation_angle beállítása a cím forgatásához. A szög fokban mérhető; ez a példa egy oszlopdiagramot ment, amelynek az értéktengely címe 90 fokkal van elfordítva.
import aspose.slides as slides
import aspose.slides.charts as charts
with slides.Presentation() as presentation:
slide = presentation.slides[0]
chart = slide.shapes.add_chart(charts.ChartType.CLUSTERED_COLUMN, 50, 50, 450, 300)
chart.axes.vertical_axis.has_title = True
chart.axes.vertical_axis.title.add_text_frame_for_overriding("Value")
chart.axes.vertical_axis.title.text_format.text_block_format.rotation_angle = 90
presentation.save("RotatedAxisTitle.pptx", slides.export.SaveFormat.PPTX)
A tengely pozíciójának beállítása kategória- vagy értéktengelyen
Használja a axis_between_categories tulajdonságot annak szabályozásához, hogy az értéktengely a kategóriatengelyt kategóriák között vagy a kategória jelölőknél keresztezi-e. Ez a tulajdonság a kategóriatengelyekre vonatkozik. A példa a True értéket állítja be egy oszlopdiagram vízszintes kategóriatengelyén, és elmenti az eredményt.
import aspose.slides as slides
import aspose.slides.charts as charts
with slides.Presentation() as presentation:
slide = presentation.slides[0]
chart = slide.shapes.add_chart(charts.ChartType.CLUSTERED_COLUMN, 50, 50, 450, 300)
chart.axes.horizontal_axis.axis_between_categories = True
presentation.save("AxisBetweenCategories.pptx", slides.export.SaveFormat.PPTX)
Megjelenítési egység beállítása a diagram értéktengelyén
Állítsa a display_unit értékét a értéktengely címkéinek skálázásához az alapadatok módosítása nélkül. A DisplayUnitType MILLIONS értékre állításakor a 60 000 000 érték 60‑ként jelenik meg. A példa egy oszlopdiagramot hoz létre, és a milliók megjelenítési egységet alkalmazza a függőleges tengelyre.
import aspose.slides as slides
import aspose.slides.charts as charts
with slides.Presentation() as presentation:
slide = presentation.slides[0]
chart = slide.shapes.add_chart(charts.ChartType.CLUSTERED_COLUMN, 50, 50, 450, 300)
chart.axes.vertical_axis.display_unit = charts.DisplayUnitType.MILLIONS
presentation.save("Result.pptx", slides.export.SaveFormat.PPTX)
Logaritmikus értéktengely beállítása
Egy logaritmikus értéktengely hasznos, ha a pozitív értékek több nagyságrendet fednek le. Például egy szolgáltatás 10, 100, 1 000, 10 000 és 100 000 kérést kaphat öt időszakban. Lineáris skálán a kisebb értékek közel a nullához helyezkednek el. A logaritmikus skála a relatív növekedést könnyebbé teszi összehasonlítani: az egyenlő távolságok egyenlő arányokat jelentenek a különbségek helyett.
Állítsa a is_logarithmic értékét True-ra az értéktengelyen, és a log_base segítségével válassza ki az alapot. Ez módosítja a meglévő értékek megjelenítését; nem változtatja meg az adatot, és nem ad hozzá logaritmikus trendvonalat. A trendvonal az adatokhoz illesztett kapcsolatot jelenti, és külön funkció.
Az értéktengely és az alap kiválasztása
Vonal- vagy oszlopdiagram esetén az értéktengely a vertical_axis. Horizontális sávdiagram esetén a horizontal_axis. Szórás- és buborékdiagramok két értéktengellyel rendelkeznek, ezért X‑értékekhez a horizontális, Y‑értékekhez a függőleges tengelyt, vagy akár mindkettőt válassza. Ne alkalmazzon logaritmikus skálázást kategóriatengelyre.
Az alapértelmezett logaritmikus alap a 10. PPTX diagramok esetén a 2 és 1000 közötti (beleértve) bázist használhat; a tört alapok, például a 2.5, szintén támogatottak. A 10 alap esetén a sorrendben következő hatványok (10, 100, 1 000, 10 000) egyenlő távolságra vannak.
Lineáris és logaritmikus skálázás összehasonlítása
A következő önálló példa egy vonaldiagramot hoz létre az öt kérési számmal az első dián, majd lemásolja azt, és a második dián bekapcsolja a 10‑es alapú logaritmikus értéktengelyt. Mindkét dia ugyanazt az adatot tartja meg.
import aspose.slides as slides
import aspose.slides.charts as charts
with slides.Presentation() as presentation:
slide = presentation.slides[0]
chart = slide.shapes.add_chart(charts.ChartType.LINE, 30, 40, 660, 200)
chart.has_legend = False
chart.chart_data.categories.clear()
chart.chart_data.series.clear()
workbook = chart.chart_data.chart_data_workbook
workbook.clear(0)
series = chart.chart_data.series.add(charts.ChartType.LINE)
values = [10, 100, 1000, 10000, 100000]
for i, value in enumerate(values):
category_cell = workbook.get_cell(0, i + 1, 0, f"Period {i + 1}")
chart.chart_data.categories.add(category_cell)
value_cell = workbook.get_cell(0, i + 1, 1, value)
series.data_points.add_data_point_for_line_series(value_cell)
# Tartsa az első diát lineárisnak, és csak a másolat értéktengely skáláját változtassa meg.
logarithmic_slide = presentation.slides.add_clone(slide)
logarithmic_chart = logarithmic_slide.shapes[0]
value_axis = logarithmic_chart.axes.vertical_axis
value_axis.is_logarithmic = True
value_axis.log_base = 10
presentation.save("LogarithmicAxis.pptx", slides.export.SaveFormat.PPTX)
Lineáris skála (dia 1): Az egyenlő függőleges távolságok egyenlő különbségeket jelentenek a kérési számokban. A legnagyobb érték uralja a diagramot, így a kisebb értékek nehezen megkülönböztethetők.

Logaritmikus skála (dia 2): Az egyenlő függőleges távolságok egyenlő arányokat jelentenek. Minden időszak tízszer több kérést tartalmaz, mint az előző, ezért a pontok egy egyenes, emelkedő vonalat alkotnak a 10‑es alapú skálán. A tengelycímkék továbbra is az eredeti kérési számokat mutatják.

Nulla és negatív értékek kezelése
A logaritmikus skála csak szigorúan pozitív értékeket jeleníthet meg. Ellenőrizze az adatokat a bekapcsolás előtt. Ha a nulla vagy a negatív értékek jelentősek, használjon lineáris skálát vagy jelenítse meg őket külön. Ha az értékek kizárása megfelelő az elemzéshez, magyarázza meg a hiányt. Ne cserélje le őket hallgatólagosan kis pozitív számokra, mivel ez megváltoztatja az adatok jelentését. Bármely kézzel beállított minimum vagy maximum a logaritmikus tengelyen szintén pozitív kell legyen.
FAQ
Hogyan állíthatom be azt az értéket, ahol egy tengely a másikat metszik (tengelykereszteződés)?
A cross_type használatával választhatja ki a metszés viselkedését. Numerikus metszési érték megadásához állítsa be a cross_at értékét. Ezek a beállítások lehetővé teszik a tengelykereszteződés áthelyezését egy megfelelő alapvonalra.
Hogyan pozícionálhatom a jelölőcímkéket a tengelyhez képest?
Állítsa a tick_label_position értékét a TickLabelPositionType‑t használva: LOW, HIGH, NEXT_TO vagy NONE. A jelölő vonalak szabályozásához használja a major_tick_mark vagy a minor_tick_mark beállítást; ezek külön állnak a címke pozicionálásától.


