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.

Automatische categorie‑label‑spacing met alle 24 kolommen zichtbaar

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.

Handmatige categorie‑label‑interval van drie met alle 24 kolommen zichtbaar

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.