Formatera diagram i presentationer med Python
Översikt
Den här artikeln förklarar hur man formaterar diagram i PowerPoint-presentationer med Aspose.Slides. Den visar hur man anpassar viktiga diagramdelar såsom axlar, rutnätlinjer, titlar, förklaringar, plotområdet och väggfyllningar för att förbättra diagrammens utseende och läsbarhet.
Den demonstrerar också hur man ställer in teckensnittsegenskaper för diagramtext, tillämpar förinställda och anpassade numeriska format på diagramdata samt aktiverar rundade hörn för diagramområdet. Tillsammans visar dessa exempel hur man styr både den visuella stilen och data presentationen av diagram i en presentation.
Formatera diagramdelar
Aspose.Slides för Python låter utvecklare lägga till anpassade diagram i sina bilder från grunden. Detta avsnitt förklarar hur man formaterar olika diagramdelar, inklusive kategori- och värdeaxlar.
Aspose.Slides tillhandahåller ett enkelt API för att hantera diagramdelar och tillämpa anpassad formatering:
- Skapa en instans av klassen Presentation.
- Hämta en referens till bilden med dess index.
- Lägg till ett diagram med standarddata av önskad typ (i detta exempel,
ChartType.LINE_WITH_MARKERS). - Få åtkomst till diagrammets värdeaxel och ställ in följande:
- Ange linjeformatet för värdeaxelns huvudrutnätlinjer.
- Ange linjeformatet för värdeaxelns sekundära rutnätlinjer.
- Ange nummerformatet för värdeaxeln.
- Ange min, max, huvud- och sekundära enheter för värdeaxeln.
- Ange textegenskaperna för värdeaxelns etiketter.
- Ange titel för värdeaxeln.
- Ange linjeformatet för värdeaxeln.
- Få åtkomst till diagrammets kategori-axel och ställ in följande:
- Ange linjeformatet för kategori-axelns huvudrutnätlinjer.
- Ange linjeformatet för kategori-axelns sekundära rutnätlinjer.
- Ange textegenskaperna för kategori-axelns etiketter.
- Ange titel för kategori-axeln.
- Ange etikettplaceringen för kategori-axeln.
- Ange rotationsvinkeln för kategori-axelns etiketter.
- Få åtkomst till diagrammets förklaring och ange dess textegenskaper.
- Visa diagramförklaringen utan att den överlappar diagrammet.
- Få åtkomst till diagrammets sekundära värdeaxel och ställ in följande:
- Aktivera den sekundära värdeaxeln.
- Ange linjeformatet för den sekundära värdeaxeln.
- Ange nummerformatet för den sekundära värdeaxeln.
- Ange min, max, huvud- och sekundära enheter för den sekundära värdeaxeln.
- Rita den första diagramserien på den sekundära värdeaxeln.
- Ange diagrammets bakväggsfyllningsfärg.
- Ange diagrammets plot-områdes fyllningsfärg.
- Skriv den modifierade presentationen till en PPTX‑fil.
import aspose.slides.charts as charts
import aspose.slides as slides
import aspose.pydrawing as draw
# Skapa en instans av Presentation-klassen.
with slides.Presentation() as presentation:
# Hämta den första bilden.
slide = presentation.slides[0]
# Lägg till ett exempel-diagram.
chart = slide.shapes.add_chart(charts.ChartType.LINE_WITH_MARKERS, 50, 50, 500, 400)
# Ställ in diagramtiteln.
chart.has_title = True
chart.chart_title.add_text_frame_for_overriding("")
chart_title = chart.chart_title.text_frame_for_overriding.paragraphs[0].portions[0]
chart_title.text = "Sample Chart"
chart_title.portion_format.fill_format.fill_type = slides.FillType.SOLID
chart_title.portion_format.fill_format.solid_fill_color.color = draw.Color.gray
chart_title.portion_format.font_height = 20
chart_title.portion_format.font_bold = 1
chart_title.portion_format.font_italic = 1
# Angiv huvudrutnätformat för värdeaxeln.
chart.axes.vertical_axis.major_grid_lines_format.line.fill_format.fill_type = slides.FillType.SOLID
chart.axes.vertical_axis.major_grid_lines_format.line.fill_format.solid_fill_color.color = draw.Color.blue
chart.axes.vertical_axis.major_grid_lines_format.line.width = 5
chart.axes.vertical_axis.major_grid_lines_format.line.dash_style = slides.LineDashStyle.DASH_DOT
# Angiv sekundärt rutnätformat för värdeaxeln.
chart.axes.vertical_axis.minor_grid_lines_format.line.fill_format.fill_type = slides.FillType.SOLID
chart.axes.vertical_axis.minor_grid_lines_format.line.fill_format.solid_fill_color.color = draw.Color.red
chart.axes.vertical_axis.minor_grid_lines_format.line.width = 3
# Angiv nummerformat för värdeaxeln.
chart.axes.vertical_axis.is_number_format_linked_to_source = False
chart.axes.vertical_axis.display_unit = charts.DisplayUnitType.THOUSANDS
chart.axes.vertical_axis.number_format = "0.0%"
# Angiv värdeaxelns max-, min-, huvud- och sekundära enheter.
chart.axes.vertical_axis.is_automatic_major_unit = False
chart.axes.vertical_axis.is_automatic_max_value = False
chart.axes.vertical_axis.is_automatic_minor_unit = False
chart.axes.vertical_axis.is_automatic_min_value = False
chart.axes.vertical_axis.max_value = 15
chart.axes.vertical_axis.min_value = -2
chart.axes.vertical_axis.minor_unit = 0.5
chart.axes.vertical_axis.major_unit = 2.0
# Angiv textegenskaper för värdeaxeln.
vertical_axis_portion_format = chart.axes.vertical_axis.text_format.portion_format
vertical_axis_portion_format.font_bold = 1
vertical_axis_portion_format.font_height = 16
vertical_axis_portion_format.font_italic = 1
vertical_axis_portion_format.fill_format.fill_type = slides.FillType.SOLID
vertical_axis_portion_format.fill_format.solid_fill_color.color = draw.Color.dark_green
vertical_axis_portion_format.latin_font = slides.FontData("Times New Roman")
# Angiv titel för värdeaxeln.
chart.axes.vertical_axis.has_title = True
chart.axes.vertical_axis.title.add_text_frame_for_overriding("")
vertical_axis_title = chart.axes.vertical_axis.title.text_frame_for_overriding.paragraphs[0].portions[0]
vertical_axis_title.text = "Primary Axis"
vertical_axis_title.portion_format.fill_format.fill_type = slides.FillType.SOLID
vertical_axis_title.portion_format.fill_format.solid_fill_color.color = draw.Color.gray
vertical_axis_title.portion_format.font_height = 20
vertical_axis_title.portion_format.font_bold = 1
vertical_axis_title.portion_format.font_italic = 1
# Angiv huvudrutnätformat för kategori-axeln.
chart.axes.horizontal_axis.major_grid_lines_format.line.fill_format.fill_type = slides.FillType.SOLID
chart.axes.horizontal_axis.major_grid_lines_format.line.fill_format.solid_fill_color.color = draw.Color.green
chart.axes.horizontal_axis.major_grid_lines_format.line.width = 5
# Angiv sekundärt rutnätformat för kategori-axeln.
chart.axes.horizontal_axis.minor_grid_lines_format.line.fill_format.fill_type = slides.FillType.SOLID
chart.axes.horizontal_axis.minor_grid_lines_format.line.fill_format.solid_fill_color.color = draw.Color.yellow
chart.axes.horizontal_axis.minor_grid_lines_format.line.width = 3
# Angiv textegenskaper för kategori-axeln.
horizontal_axis_portion_format = chart.axes.horizontal_axis.text_format.portion_format
horizontal_axis_portion_format.font_bold = 1
horizontal_axis_portion_format.font_height = 16
horizontal_axis_portion_format.font_italic = 1
horizontal_axis_portion_format.fill_format.fill_type = slides.FillType.SOLID
horizontal_axis_portion_format.fill_format.solid_fill_color.color = draw.Color.blue
horizontal_axis_portion_format.latin_font = slides.FontData("Arial")
# Angiv titel för kategori-axeln.
chart.axes.horizontal_axis.has_title = True
chart.axes.horizontal_axis.title.add_text_frame_for_overriding("")
horizontal_axis_title = chart.axes.horizontal_axis.title.text_frame_for_overriding.paragraphs[0].portions[0]
horizontal_axis_title.text = "Sample Category"
horizontal_axis_title.portion_format.fill_format.fill_type = slides.FillType.SOLID
horizontal_axis_title.portion_format.fill_format.solid_fill_color.color = draw.Color.gray
horizontal_axis_title.portion_format.font_height = 20
horizontal_axis_title.portion_format.font_bold = 1
horizontal_axis_title.portion_format.font_italic = 1
# Angiv etikettposition för kategori-axeln.
chart.axes.horizontal_axis.tick_label_position = charts.TickLabelPositionType.LOW
# Angiv rotationsvinkel för kategori-axelns etiketter.
chart.axes.horizontal_axis.tick_label_rotation_angle = 45
# Angiv textegenskaper för förklaringen.
legend_portion_format = chart.legend.text_format.portion_format
legend_portion_format.font_bold = 1
legend_portion_format.font_height = 16
legend_portion_format.font_italic = 1
legend_portion_format.fill_format.fill_type = slides.FillType.SOLID
legend_portion_format.fill_format.solid_fill_color.color = draw.Color.dark_red
# Visa diagramförklaringen överlappande diagrammet.
chart.legend.overlay = True
# Angiv bakväggens färg för diagrammet.
chart.back_wall.thickness = 1
chart.back_wall.format.fill.fill_type = slides.FillType.SOLID
chart.back_wall.format.fill.solid_fill_color.color = draw.Color.orange
chart.floor.format.fill.fill_type = slides.FillType.SOLID
chart.floor.format.fill.solid_fill_color.color = draw.Color.red
# Angiv färg för plot-området.
chart.plot_area.format.fill.fill_type = slides.FillType.SOLID
chart.plot_area.format.fill.solid_fill_color.color = draw.Color.light_cyan
# Spara presentationen.
presentation.save("FormattedChart.pptx", slides.export.SaveFormat.PPTX)
Ställ in diagramteckensnittsegenskaper
Aspose.Slides för Python stöder att ställa in teckensnittsegenskaper för diagram. Följ stegen nedan för att konfigurera diagrammets teckensnittsegenskaper:
- Instansiera ett Presentation‑objekt.
- Lägg till ett diagram på bilden.
- Ange teckensnittshöjden.
- Spara den modifierade presentationen.
Ett exempel på kod finns nedan.
import aspose.slides.charts as charts
import aspose.slides as slides
with slides.Presentation() as presentation:
slide = presentation.slides[0]
chart = slide.shapes.add_chart(charts.ChartType.CLUSTERED_COLUMN, 100, 100, 500, 400)
chart.text_format.portion_format.font_height = 20
chart.chart_data.series[0].labels.default_data_label_format.show_value = True
presentation.save("ChartFontProperties.pptx", slides.export.SaveFormat.PPTX)
Ange numeriskt format
Aspose.Slides för Python tillhandahåller ett enkelt API för att hantera diagramdatas format:
- Skapa en instans av klassen Presentation.
- Hämta en referens till bilden med dess index.
- Lägg till ett diagram med standarddata av vilken önskad typ som helst.
- Ange ett förinställt nummerformat från de tillgängliga förinställda värdena.
- Gå igenom diagramdatacellerna i varje serie och ange nummerformatet.
- Spara presentationen.
- Ange ett anpassat nummerformat.
- Gå igenom diagramdatacellerna i varje serie och ange ett annat nummerformat.
- Spara presentationen.
import aspose.slides.charts as charts
import aspose.slides as slides
# Instansiera Presentation-klassen.
with slides.Presentation() as presentation:
# Hämta den första bilden.
slide = presentation.slides[0]
# Lägg till ett standardklustrat stapeldiagram.
chart = slide.shapes.add_chart(charts.ChartType.CLUSTERED_COLUMN, 50, 50, 500, 400)
# Ställ in det förinställda nummerformatet.
# Gå igenom varje diagramserie.
for series in chart.chart_data.series:
# Gå igenom varje datapunkt i serien.
for cell in series.data_points:
# Ställ in nummerformatet.
cell.value.as_cell.preset_number_format = 10 # 0.00%
# Spara presentationen.
presentation.save("PresetNumberFormat.pptx", slides.export.SaveFormat.PPTX)
De tillgängliga förinställda nummerformaten och deras motsvarande index listas nedan.
| 0 | Allmänt |
|---|---|
| 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 | @ |
Ange rundade kanter för diagramområdet
Aspose.Slides för Python stöder konfigurering av diagramområdet med egenskapen Chart.has_rounded_corners.
- Instansiera ett Presentation‑objekt.
- Lägg till ett diagram på bilden.
- Ange diagrammets fyllningstyp och fyllningsfärg.
- Ställ in egenskapen rounded-corners till
True. - Spara den modifierade presentationen.
Ett exempel finns nedan.
import aspose.slides.charts as charts
import aspose.slides as slides
with slides.Presentation() as presentation:
slide = presentation.slides[0]
chart = slide.shapes.add_chart(charts.ChartType.CLUSTERED_COLUMN, 20, 100, 600, 400)
chart.line_format.fill_format.fill_type = slides.FillType.SOLID
chart.line_format.style = slides.LineStyle.SINGLE
chart.has_rounded_corners = True
presentation.save("RoundedBorders.pptx", slides.export.SaveFormat.PPTX)
FAQ
Kan jag ange halvtransparenta fyllningar för kolumner/områden samtidigt som kanten förblir opak?
Ja. Fyllnadens transparens och konturen konfigureras separat. Detta är användbart för att förbättra läsbarheten av rutnätet och data i täta visualiseringar.
Hur kan jag hantera datalabels när de överlappar?
Minska teckensnittsstorleken, inaktivera icke nödvändiga labelkomponenter (till exempel kategorier), justera labelns förskjutning/position, visa endast etiketter för valda punkter om det behövs, eller byt formatet till “värde + förklaring”.
Kan jag använda gradient‑ eller mönsterfyllningar på serier?
Ja. Både solida och gradient-/mönsterfyllningar är vanligtvis tillgängliga. I praktiken bör gradienter användas sparsamt och kombinationer som minskar kontrasten mot rutnätet och texten undvikas.