Grafieken in presentatie opmaken in Python
Overzicht
Dit artikel legt uit hoe u grafieken in PowerPoint‑presentaties kunt opmaken met Aspose.Slides. Het toont hoe u belangrijke grafiekelementen zoals assen, rasterlijnen, titels, legenda’s, het plotgebied en wandvullingen kunt aanpassen om het uiterlijk en de leesbaarheid van grafiekgegevens te verbeteren.
Het laat ook zien hoe u font‑eigenschappen voor grafiekttekst instelt, vooraf gedefinieerde en aangepaste numerieke opmaak op grafiekgegevens toepast en afgeronde hoeken voor het grafiekgebied inschakelt. Samen laten deze voorbeelden zien hoe u zowel de visuele stijl als de gegevenspresentatie van grafieken in een presentatie kunt beheersen.
Grafiek‑entiteiten opmaken
Aspose.Slides for Python via Java stelt ontwikkelaars in staat om aangepaste grafieken vanaf nul aan hun dia’s toe te voegen. Dit artikel legt uit hoe u verschillende grafiek‑entiteiten, waaronder de categorie‑ en waarde‑assen, kunt opmaken.
Aspose.Slides for Python via Java biedt een eenvoudige API voor het beheren van verschillende grafiek‑entiteiten en het opmaken ervan met aangepaste waarden:
- Maak een instantie van de Presentation klasse.
- Toegang tot een dia via de index.
- Voeg een grafiek van het gewenste type toe met standaardgegevens (dit voorbeeld gebruikt ChartType.LineWithMarkers).
- Open de waardeas van de grafiek en stel de volgende eigenschappen in:
- Stel Line format in voor de hoofd‑rasterlijnen van de waardeas.
- Stel Line format in voor de onder‑rasterlijnen van de waardeas.
- Stel Number Format in voor de waardeas.
- Stel minimum, maximum, major, and minor units in voor de waardeas.
- Stel Text Properties in voor de gegevens van de waardeas.
- Stel Title in voor de waardeas.
- Open de categorie‑as van de grafiek en stel de volgende eigenschappen in:
- Stel Line format in voor de hoofd‑rasterlijnen van de categorie‑as.
- Stel Line format in voor de onder‑rasterlijnen van de categorie‑as.
- Stel Text Properties in voor de gegevens van de categorie‑as.
- Stel Title in voor de categorie‑as.
- Stel Label Positioning in voor de categorie‑as.
- Stel Rotation Angle in voor de labels van de categorie‑as.
- Open de legende van de grafiek en stel de text properties in.
- Toon de legende van de grafiek zonder dat deze overlapt met de grafiek.
- Open de secondary value axis van de grafiek en stel de volgende eigenschappen in:
- Schakel de secundaire value axis in.
- Stel Line Format in voor de secundaire value axis.
- Stel Number Format in voor de secundaire value axis.
- Stel minimum, maximum, major, and minor units in voor de secundaire value axis.
- Plot de eerste grafiekreeks op de secundaire value axis.
- Stel de vulkleur van de achterwand van de grafiek in.
- Stel de vulkleur van het plotgebied van de grafiek in.
- Schrijf de aangepaste presentatie naar een PPTX‑bestand.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import ChartType, DisplayUnitType, FillType, FontData, LineDashStyle, LineStyle, NullableBool, Presentation, PresetColor, SaveFormat, TickLabelPositionType
Color = jpype.JClass("java.awt.Color")
nullable_true = NullableBool.True_
# Maak een instantie van de Presentation-klasse
presentation = Presentation()
try:
# Toegang tot de eerste dia
slide = presentation.getSlides().get_Item(0)
# Voeg de voorbeeldgrafiek toe
chart = slide.getShapes().addChart(ChartType.LineWithMarkers, 50, 50, 500, 400)
# Stel de grafiektitel in
chart.setTitle(True)
chart.getChartTitle().addTextFrameForOverriding("")
chart_title = chart.getChartTitle().getTextFrameForOverriding().getParagraphs().get_Item(0).getPortions().get_Item(0)
chart_title.setText("Sample Chart")
chart_title.getPortionFormat().getFillFormat().setFillType(FillType.Solid)
chart_title.getPortionFormat().getFillFormat().getSolidFillColor().setColor(Color.GRAY)
chart_title.getPortionFormat().setFontHeight(20)
chart_title.getPortionFormat().setFontBold(nullable_true)
chart_title.getPortionFormat().setFontItalic(nullable_true)
# Stel opmaak van hoofd‑rasterlijnen voor de waarde‑as in
chart.getAxes().getVerticalAxis().getMajorGridLinesFormat().getLine().getFillFormat().setFillType(FillType.Solid)
chart.getAxes().getVerticalAxis().getMajorGridLinesFormat().getLine().getFillFormat().getSolidFillColor().setColor(Color.BLUE)
chart.getAxes().getVerticalAxis().getMajorGridLinesFormat().getLine().setWidth(5)
chart.getAxes().getVerticalAxis().getMajorGridLinesFormat().getLine().setDashStyle(LineDashStyle.DashDot)
# Stel opmaak van onder‑rasterlijnen voor de waarde‑as in
chart.getAxes().getVerticalAxis().getMinorGridLinesFormat().getLine().getFillFormat().setFillType(FillType.Solid)
chart.getAxes().getVerticalAxis().getMinorGridLinesFormat().getLine().getFillFormat().getSolidFillColor().setColor(Color.RED)
chart.getAxes().getVerticalAxis().getMinorGridLinesFormat().getLine().setWidth(3)
# Stel numeriek formaat van de waarde‑as in
chart.getAxes().getVerticalAxis().setNumberFormatLinkedToSource(False)
chart.getAxes().getVerticalAxis().setDisplayUnit(DisplayUnitType.Thousands)
chart.getAxes().getVerticalAxis().setNumberFormat("0.0%")
# Stel maximale en minimale waarden van de grafiek in
chart.getAxes().getVerticalAxis().setAutomaticMajorUnit(False)
chart.getAxes().getVerticalAxis().setAutomaticMaxValue(False)
chart.getAxes().getVerticalAxis().setAutomaticMinorUnit(False)
chart.getAxes().getVerticalAxis().setAutomaticMinValue(False)
chart.getAxes().getVerticalAxis().setMaxValue(15)
chart.getAxes().getVerticalAxis().setMinValue(-2)
chart.getAxes().getVerticalAxis().setMinorUnit(0.5)
chart.getAxes().getVerticalAxis().setMajorUnit(2.0)
# Stel tekst‑eigenschappen van de waarde‑as in
value_axis_text = chart.getAxes().getVerticalAxis().getTextFormat().getPortionFormat()
value_axis_text.setFontBold(nullable_true)
value_axis_text.setFontHeight(16)
value_axis_text.setFontItalic(nullable_true)
value_axis_text.getFillFormat().setFillType(FillType.Solid)
value_axis_text.getFillFormat().getSolidFillColor().setPresetColor(PresetColor.DarkGreen)
value_axis_font = FontData("Times New Roman")
value_axis_text.setLatinFont(value_axis_font)
# Stel titel van de waarde‑as in
chart.getAxes().getVerticalAxis().setTitle(True)
chart.getAxes().getVerticalAxis().getTitle().addTextFrameForOverriding("")
value_axis_title = chart.getAxes().getVerticalAxis().getTitle().getTextFrameForOverriding().getParagraphs().get_Item(0).getPortions().get_Item(0)
value_axis_title.setText("Primary Axis")
value_axis_title.getPortionFormat().getFillFormat().setFillType(FillType.Solid)
value_axis_title.getPortionFormat().getFillFormat().getSolidFillColor().setColor(Color.GRAY)
value_axis_title.getPortionFormat().setFontHeight(20)
value_axis_title.getPortionFormat().setFontBold(nullable_true)
value_axis_title.getPortionFormat().setFontItalic(nullable_true)
# Stel opmaak van hoofd‑rasterlijnen voor de categorie‑as in
chart.getAxes().getHorizontalAxis().getMajorGridLinesFormat().getLine().getFillFormat().setFillType(FillType.Solid)
chart.getAxes().getHorizontalAxis().getMajorGridLinesFormat().getLine().getFillFormat().getSolidFillColor().setColor(Color.GREEN)
chart.getAxes().getHorizontalAxis().getMajorGridLinesFormat().getLine().setWidth(5)
# Stel opmaak van onder‑rasterlijnen voor de categorie‑as in
chart.getAxes().getHorizontalAxis().getMinorGridLinesFormat().getLine().getFillFormat().setFillType(FillType.Solid)
chart.getAxes().getHorizontalAxis().getMinorGridLinesFormat().getLine().getFillFormat().getSolidFillColor().setColor(Color.YELLOW)
chart.getAxes().getHorizontalAxis().getMinorGridLinesFormat().getLine().setWidth(3)
# Stel tekst‑eigenschappen van de categorie‑as in
category_axis_text = chart.getAxes().getHorizontalAxis().getTextFormat().getPortionFormat()
category_axis_text.setFontBold(nullable_true)
category_axis_text.setFontHeight(16)
category_axis_text.setFontItalic(nullable_true)
category_axis_text.getFillFormat().setFillType(FillType.Solid)
category_axis_text.getFillFormat().getSolidFillColor().setColor(Color.BLUE)
category_axis_font = FontData("Arial")
category_axis_text.setLatinFont(category_axis_font)
# Stel categorie‑titel in
chart.getAxes().getHorizontalAxis().setTitle(True)
chart.getAxes().getHorizontalAxis().getTitle().addTextFrameForOverriding("")
category_axis_title = chart.getAxes().getHorizontalAxis().getTitle().getTextFrameForOverriding().getParagraphs().get_Item(0).getPortions().get_Item(0)
category_axis_title.setText("Sample Category")
category_axis_title.getPortionFormat().getFillFormat().setFillType(FillType.Solid)
category_axis_title.getPortionFormat().getFillFormat().getSolidFillColor().setColor(Color.GRAY)
category_axis_title.getPortionFormat().setFontHeight(20)
category_axis_title.getPortionFormat().setFontBold(nullable_true)
category_axis_title.getPortionFormat().setFontItalic(nullable_true)
# Stel positie van labels op de categorie‑as in
chart.getAxes().getHorizontalAxis().setTickLabelPosition(TickLabelPositionType.Low)
# Stel rotatie‑hoek van labels op de categorie‑as in
chart.getAxes().getHorizontalAxis().setTickLabelRotationAngle(45)
# Stel tekst‑eigenschappen van de legenda in
legend_text = chart.getLegend().getTextFormat().getPortionFormat()
legend_text.setFontBold(nullable_true)
legend_text.setFontHeight(16)
legend_text.setFontItalic(nullable_true)
legend_text.getFillFormat().setFillType(FillType.Solid)
legend_text.getFillFormat().getSolidFillColor().setPresetColor(PresetColor.DarkRed)
# Toon de grafieklegenda zonder overlappen met de grafiek
chart.getLegend().setOverlay(False)
chart.getChartData().getSeries().get_Item(0).setPlotOnSecondAxis(True)
# Stel secundaire waarde‑as in
chart.getAxes().getSecondaryVerticalAxis().setVisible(True)
chart.getAxes().getSecondaryVerticalAxis().getFormat().getLine().setStyle(LineStyle.ThickBetweenThin)
chart.getAxes().getSecondaryVerticalAxis().getFormat().getLine().setWidth(20)
# Stel numeriek formaat van de secundaire waarde‑as in
chart.getAxes().getSecondaryVerticalAxis().setNumberFormatLinkedToSource(False)
chart.getAxes().getSecondaryVerticalAxis().setDisplayUnit(DisplayUnitType.Hundreds)
chart.getAxes().getSecondaryVerticalAxis().setNumberFormat("0.0%")
# Stel maximale en minimale waarden van de grafiek in
chart.getAxes().getSecondaryVerticalAxis().setAutomaticMajorUnit(False)
chart.getAxes().getSecondaryVerticalAxis().setAutomaticMaxValue(False)
chart.getAxes().getSecondaryVerticalAxis().setAutomaticMinorUnit(False)
chart.getAxes().getSecondaryVerticalAxis().setAutomaticMinValue(False)
chart.getAxes().getSecondaryVerticalAxis().setMaxValue(20)
chart.getAxes().getSecondaryVerticalAxis().setMinValue(-5)
chart.getAxes().getSecondaryVerticalAxis().setMinorUnit(0.5)
chart.getAxes().getSecondaryVerticalAxis().setMajorUnit(2.0)
# Stel kleur van de achterwand van de grafiek in
chart.getBackWall().setThickness(1)
chart.getBackWall().getFormat().getFill().setFillType(FillType.Solid)
chart.getBackWall().getFormat().getFill().getSolidFillColor().setColor(Color.ORANGE)
chart.getFloor().getFormat().getFill().setFillType(FillType.Solid)
chart.getFloor().getFormat().getFill().getSolidFillColor().setColor(Color.RED)
# Stel kleur van het plotgebied in
chart.getPlotArea().getFormat().getFill().setFillType(FillType.Solid)
chart.getPlotArea().getFormat().getFill().getSolidFillColor().setPresetColor(PresetColor.LightCyan)
# Sla de presentatie op
presentation.save("FormattedChart.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
Font‑eigenschappen instellen voor een grafiek
Aspose.Slides for Python via Java ondersteunt het instellen van font‑eigenschappen voor grafieken. Volg deze stappen om de font‑eigenschappen in te stellen:
- Maak een instantie van de Presentation klasse.
- Voeg een grafiek toe aan de dia.
- Stel de font‑hoogte in.
- Sla de aangepaste presentatie op.
Het volgende voorbeeld toont deze stappen.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import ChartType, Presentation, SaveFormat
# Maak een instantie van de Presentation-klasse
presentation = Presentation()
try:
chart = presentation.getSlides().get_Item(0).getShapes().addChart(ChartType.ClusteredColumn, 100, 100, 500, 400)
chart.getTextFormat().getPortionFormat().setFontHeight(20)
chart.getChartData().getSeries().get_Item(0).getLabels().getDefaultDataLabelFormat().setShowValue(True)
presentation.save("FontPropertiesForChart.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
Het numerieke formaat instellen
Aspose.Slides for Python via Java biedt een eenvoudige API voor het beheren van grafiekgegevens‑formaten:
- Maak een instantie van de Presentation klasse.
- Toegang tot een dia via de index.
- Voeg een grafiek van het gewenste type toe met standaardgegevens (dit voorbeeld gebruikt ChartType.ClusteredColumn).
- Stel het vooraf gedefinieerde nummerformaat in op basis van de mogelijke vooraf ingestelde waarden.
- Itereer door de gegevenscellen in elke grafiekreeks en stel hun nummerformaat in.
- Sla de presentatie op.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import ChartType, Presentation, SaveFormat
# Maak een instantie van de Presentation-klasse
presentation = Presentation()
try:
# Toegang tot de eerste presentatiedia
slide = presentation.getSlides().get_Item(0)
# Voeg een standaard gegroepeerde kolomgrafiek toe
chart = slide.getShapes().addChart(ChartType.ClusteredColumn, 50, 50, 500, 400)
# Toegang tot de verzameling grafiekreeksen
chart_series_collection = chart.getChartData().getSeries()
# Doorloop elke grafiekreeks
for chart_series in chart_series_collection:
# Doorloop elk gegevenspunt in de reeks
for data_point in chart_series.getDataPoints():
# Stel het getalformaat in
data_point.getValue().getAsCell().setPresetNumberFormat(jpype.JByte(10)) # 0.00%
# Sla de presentatie op
presentation.save("PresetNumberFormat.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
De beschikbare vooraf ingestelde nummerformaten en hun indexen staan hieronder vermeld:
| 0 | General |
|---|---|
| 1 | 0 |
| 2 | 0.00 |
| 3 | #,##0 |
| 4 | #,##0.00 |
| 5 | $#,##0;$-#,##0 |
| 6 | $#,##0;Red$-#,##0 |
| 7 | $#,##0.00;$-#,##0.00 |
| 8 | $#,##0.00;Red$-#,##0.00 |
| 9 | 0% |
| 10 | 0.00% |
| 11 | 0.00E+00 |
| 12 | # ?/? |
| 13 | # / |
| 14 | m/d/yy |
| 15 | d-mmm-yy |
| 16 | d-mmm |
| 17 | mmm-yy |
| 18 | h:mm AM/PM |
| 19 | h:mm:ss AM/PM |
| 20 | h:mm |
| 21 | h:mm:ss |
| 22 | m/d/yy h:mm |
| 37 | #,##0;-#,##0 |
| 38 | #,##0;Red-#,##0 |
| 39 | #,##0.00;-#,##0.00 |
| 40 | #,##0.00;Red-#,##0.00 |
| 41 | _ * #,##0_ ;_ * “_ ;_ @_ |
| 42 | _ $* #,##0_ ;_ $* “_ ;_ @_ |
| 43 | _ * #,##0.00_ ;_ * “??_ ;_ @_ |
| 44 | _ $* #,##0.00_ ;_ $* “??_ ;_ @_ |
| 45 | mm:ss |
| 46 | h:mm:ss |
| 47 | mm:ss.0 |
| 48 | ##0.0E+00 |
| 49 | @ |
Afgeronde randen voor het grafiekgebied instellen
Aspose.Slides for Python via Java ondersteunt afgeronde hoeken voor het grafiekgebied via de hasRoundedCorners en setRoundedCorners methoden van de Chart klasse.
- Maak een instantie van de Presentation klasse.
- Voeg een grafiek toe aan de dia.
- Stel het vultype en de stijl van de randlijn van de grafiek in.
- Schakel afgeronde hoeken in.
- Sla de aangepaste presentatie op.
Het volgende voorbeeld toont deze stappen.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import ChartType, FillType, LineStyle, Presentation, SaveFormat
# Maak een instantie van de Presentation-klasse
presentation = Presentation()
try:
slide = presentation.getSlides().get_Item(0)
chart = slide.getShapes().addChart(ChartType.ClusteredColumn, 20, 100, 600, 400)
chart.getLineFormat().getFillFormat().setFillType(FillType.Solid)
chart.getLineFormat().setStyle(LineStyle.Single)
chart.setRoundedCorners(True)
presentation.save("output.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
FAQ
Kan ik halftransparante vullingen voor kolommen/gebieden instellen terwijl de rand ondoorzichtig blijft?
Ja. De transparantie van de vulling en de omtrek worden afzonderlijk geconfigureerd. Dit is nuttig om de leesbaarheid van het raster en de gegevens in dichte visualisaties te verbeteren.
Hoe kan ik omgaan met gegevenslabels wanneer ze overlappen?
Verminder de lettergrootte, schakel niet‑essentiële labelonderdelen uit (bijvoorbeeld categorieën), stel de offset/positie van het label in, toon alleen labels voor geselecteerde punten indien nodig, of wijzig het formaat naar “value + legend”.
Kan ik verloop‑ of patroonvullingen op reeksen toepassen?
Ja. Zowel effen als verloop‑/patroonvullingen zijn doorgaans beschikbaar. Gebruik in de praktijk verlopen met mate en vermijd combinaties die het contrast met het raster en de tekst verminderen.