Grafiekassen aanpassen in presentaties met Python
Overzicht
Dit artikel legt uit hoe u grafiekassen kunt aanpassen met Aspose.Slides voor Python via .NET. Het behandelt berekende aswaarden, het wisselen van rijen en kolommen in een grafiek, aszichtbaarheid, intervals voor categorie‑etiketten en tick‑markeringen, datumcategorieën en -opmaak, rotatie van de titel, aspositionering en weergave‑eenheden.
Maximale waarden op de verticale as van grafieken ophalen
Maak een Presentatie en voeg een vlakgrafiek toe met standaardgegevens. Roep validate_chart_layout aan voordat u berekende aswaarden leest, zodat de lay-out van de grafiek up-to-date is.
Lees actual_max_value en actual_min_value voor de aslimieten, en actual_major_unit en actual_minor_unit voor de tick‑intervallen. actual_major_unit_scale en actual_minor_unit_scale geven tijd‑eenheidsschaalwaarden, die relevant zijn voor datumassen. Het voorbeeld slaat deze waarden op in lokale variabelen en slaat de grafiek op.
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)
Gegevens tussen assen verwisselen
Gebruik switch_row_column om de rollen van series en categorieën in grafiekgegevens uit te wisselen. Elke voormalige categorie wordt een serie, en elke voormalige serie wordt een categorie. Dit wijzigt hoe de gegevens worden gegroepeerd; het verwisselt niet de horizontale en verticale assen. Het voorbeeld gebruikt set_range om de standaardgegevens te koppelen aan Sheet1!A1:D5, inclusief de koprij en de categoriekolom, vóór het verwisselen van rijen en kolommen. Het slaat een grafiek op met vier series en drie categorieën.
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)
Verticale as uitschakelen voor lijngrafieken
Stel is_visible in op False voor de verticale as om deze te verbergen. Het voorbeeld maakt een lijngrafiek met standaardgegevens en slaat deze op met de verticale as verborgen.
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)
Horizontale as uitschakelen voor lijngrafieken
Stel is_visible in op False voor de horizontale as om deze te verbergen. Het voorbeeld maakt een lijngrafiek met standaardgegevens en slaat deze op met de horizontale as verborgen.
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)
Categorieas wijzigen
Stel category_axis_type in om een datum‑ of tekst‑categorieas te kiezen. Dit voorbeeld vereist ExistingChart.pptx, met een grafiek als eerste vorm op de eerste dia en categoriecellen met numerieke Excel‑datumwaarden. Het wijzigt de horizontale as naar een datumas. Door is_automatic_major_unit in te stellen op False, major_unit op 1 en major_unit_scale op maanden, worden de hoofdticks geplaatst op één‑maand‑intervallen.
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)
Intervallen voor categorie‑as‑etiketten regelen
Wanneer een grafiek veel categorieën heeft, kunt u het aantal zichtbare as‑etiketten verminderen zonder categorieën of gegevenspunten te verwijderen. Stel is_automatic_tick_label_spacing in op False en stel vervolgens tick_label_spacing in op de gewenste categorie‑interval. Voor tekstcategorieën in hun normale volgorde begint de telling bij de eerste categorie:
| Interval | Etiketten weergegeven in het voorbeeld |
|---|---|
1 |
Categorie 1, Categorie 2, Categorie 3, … Categorie 24 |
2 |
Categorie 1, Categorie 3, Categorie 5, … Categorie 23 |
3 |
Categorie 1, Categorie 4, Categorie 7, … Categorie 22 |
Een interval van 3 toont elk derde etiket, waardoor twee etiketten verborgen blijven tussen de getoonde etiketten. Het verwijdert niet de bijbehorende kolommen. Automatische spacing kiest een interval op basis van de beschikbare ruimte; het toont niet per se elk etiket.
Tick‑markeringen hebben afzonderlijke instellingen. Stel is_automatic_tick_marks_spacing in op False en gebruik tick_marks_spacing om hun interval in te stellen. Bijvoorbeeld, 1 behoudt een tick‑markering bij elke categorie‑interval terwijl etiketten alleen elke derde categorie verschijnen. Stel major_tick_mark in op een zichtbaar stijl zodat u het resultaat kunt zien. Het terugzetten van een van de automatische‑spacing‑eigenschappen op True laat de grafiek dat interval opnieuw kiezen.
Het volgende zelfstandige voorbeeld maakt 24 categorieën en één serie, en slaat vervolgens drie dia’s op in CategoryAxisIntervals.pptx: automatische spacing, handmatige label‑spacing met onafhankelijke tick‑markeringen, en herstelde automatische spacing. De twee kopieën behouden de oorspronkelijke grafiekgegevens. Er is geen invoerpresentatie vereist. Horizontale label‑tekst maakt het verschil in dichtheid gemakkelijk zichtbaar.
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: toon elk derde label, maar behoud een tick-markering voor elke categorie.
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: laat de grafiek beide intervallen opnieuw kiezen.
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)
Automatische spacing (dia 1): In deze weergave wordt elk tweede categorielabel weergegeven en wordt het op twee regels afgebroken. Het automatische resultaat kan variëren met de grafiekgrootte, lettertypen en de renderer.

Handmatige spacing (dia 2): Elk derde label wordt op één regel weergegeven, terwijl tick‑markeringen behouden blijven bij elke categorie‑interval. Alle 24 kolommen, inclusief die zonder labels, blijven zichtbaar met dezelfde waarden. Dia 3 herstelt de automatische weergave zoals hierboven.

Kies de juiste as en interval
Gebruik dit categorie‑tel‑interval voor een tekst‑categorieas, zoals de categorieas van een kolom‑, lijn‑, vlak- of staafgrafiek. In een kolomgrafiek is dit de horizontale as. In een horizontale staafgrafiek is de categorieas verticaal, dus pas deze instellingen toe op vertical_axis. Tick‑mark‑spacing is ook van toepassing op een serie‑as in grafieken die er één hebben.
Gebruik categorie‑label‑spacing niet om de numerieke schaal van een waardenas in te stellen. Op een waardenas geeft major_unit een verschil in waarden aan: bijvoorbeeld, een hoofd‑eenheid van 10 produceert ticks bij 0, 10, 20, enzovoort wanneer de as bij nul begint. Een categorie‑label‑interval van 3 telt daarentegen categorie‑posities, ongeacht hun gegevenswaarden. Verstrooiings‑ en bubbelgrafieken gebruiken waardenassen in plaats van een tekst‑categorieas. Voor een datumas gebruikt u tijd‑gebaseerde hoofd‑eenheden en schalen zoals beschreven in Wijzig een categorieas.
Datumopmaak instellen voor categorieas‑waarden
Het voorbeeld vervangt de standaardgrafiekgegevens door vier jaarlijkse waarden. Datums worden opgeslagen als OLE‑Automation seriële nummers in het eerste werkblad (index 0). Stel category_axis_type in op een datumas, schakel is_number_format_linked_to_source uit en wijs yyyy toe aan number_format zodat de categorie‑labels viercijferige jaartallen weergeven, onafhankelijk van de celopmaak.
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)
Rotatie‑hoek instellen voor een as‑titel van een grafiek
Schakel has_title in op de verticale as, geef de titeltekst op en stel rotation_angle in om de titel te roteren. De hoek wordt gemeten in graden; dit voorbeeld slaat een kolomgrafiek op met de titel van de waardenas geroteerd met 90 graden.
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)
Aspositie instellen op een categorie‑ of waardenas
Gebruik axis_between_categories om te bepalen of de waardenas de categorieas doorkruist tussen categorieën of op categorie‑tick‑markeringen. Deze eigenschap geldt voor categorieassen. Het voorbeeld stelt dit in op True op de horizontale categorieas van een kolomgrafiek en slaat het resultaat op.
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)
Weergave‑eenheid instellen op een waardenas van een grafiek
Stel display_unit in om de etiketten op een waardenas te schalen zonder de onderliggende gegevens te wijzigen. Met DisplayUnitType ingesteld op MILLIONS wordt een waarde van 60.000.000 weergegeven als 60. Het voorbeeld maakt een kolomgrafiek en past de miljoenen‑weergave‑eenheid toe op de verticale as.
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)
FAQ
Hoe stel ik de waarde in waarop één as de andere kruist (as‑kruising)?
Gebruik cross_type om het kruiskind gedrag te selecteren. Om een numerieke kruiswaarde op te geven, stel cross_at in. Met deze instellingen kunt u de askruising verplaatsen naar een geschikte basislijn.
Hoe kan ik tick‑etiketten positioneren ten opzichte van de as?
Stel tick_label_position in met behulp van TickLabelPositionType: LOW, HIGH, NEXT_TO of NONE. Om de tick‑markeringen zelf te regelen, gebruik major_tick_mark of minor_tick_mark; deze staan los van de labelpositionering.