Hantera diagramdataetiketter i presentationer med Python

Översikt

Dataetiketter i ett diagram visar detaljer om diagrammets dataserier eller enskilda datapunkter. De gör det möjligt för läsarna att snabbt identifiera dataserier och de underlättar även förståelsen av diagrammen. I Aspose.Slides för Python kan du aktivera, anpassa och formatera dataetiketter för vilket diagram som helst—genom att välja vad som ska visas (värden, procenttal, serie- eller kategorinamn), var etiketter ska placeras och hur de ser ut (teckensnitt, talformat, avgränsare, ledlinjer med mera). Denna artikel beskriver de viktigaste API:erna och exemplen du behöver för att lägga till tydliga, informativa etiketter i dina diagram.

Ange precision för dataetiketter

Diagrammets dataetiketter visar ofta numeriska värden som kräver konsekvent precision. Detta avsnitt visar hur du styr antalet decimaler för dataetiketter i Aspose.Slides genom att tillämpa ett lämpligt talformat.

Följande Python-exempel visar hur du anger den numeriska precisionen för diagrammets dataetiketter:

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, 500, 300)

    series = chart.chart_data.series[0]
    series.labels.default_data_label_format.show_value = True
    series.number_format_of_values = "#,##0.00"

    presentation.save("data_label_precision.pptx", slides.export.SaveFormat.PPTX)

Visa procenttal som etiketter

Med Aspose.Slides kan du visa procenttal som dataetiketter i diagram. Exemplet nedan beräknar varje punkts andel inom sin kategori och formaterar etiketten så att procenttalet visas.

import aspose.slides as slides
import aspose.slides.charts as charts

# Skapa en instans av Presentation-klassen.
with slides.Presentation() as presentation:
    slide = presentation.slides[0]

    chart = slide.shapes.add_chart(charts.ChartType.STACKED_COLUMN, 20, 20, 600, 400)
    series = chart.chart_data.series[0]

    total_for_categories = [0]*len(chart.chart_data.categories)
    for k in range(len(chart.chart_data.categories)):
        for i in range(len(chart.chart_data.series)):
            total_for_categories[k] += chart.chart_data.series[i].data_points[k].value.data

    for i in range(len(chart.chart_data.series)):
        series = chart.chart_data.series[i]
        series.labels.default_data_label_format.show_legend_key = False

        for j in range(len(series.data_points)):
            data_point_percent = series.data_points[j].value.data / total_for_categories[j] * 100

            text_portion = slides.Portion()
            text_portion.text = "{0:.2f} %".format(data_point_percent)
            text_portion.portion_format.font_height = 8

            label = series.data_points[j].label
            label.text_frame_for_overriding.text = ""

            paragraph = label.text_frame_for_overriding.paragraphs[0]
            paragraph.portions.add(text_portion)

            label.data_label_format.show_series_name = False
            label.data_label_format.show_percentage = False
            label.data_label_format.show_legend_key = False
            label.data_label_format.show_category_name = False
            label.data_label_format.show_bubble_size = False

    # Spara presentationen som innehåller diagrammet.
    presentation.save("percentage_as_label.pptx", slides.export.SaveFormat.PPTX)

Visa procenttecken med diagrammets dataetiketter

Detta avsnitt visar hur du visar procenttal i diagrammets dataetiketter och inkluderar procenttecknet med hjälp av Aspose.Slides. Du lär dig hur du aktiverar procentvärden för hela serier eller enskilda punkter (idealiskt för paj-, doughnut- och 100% staplade diagram) och hur du styr formateringen via etikettalternativ eller ett anpassat talformat.

Följande Python-exempel visar hur du lägger till ett procenttecken i diagrammets dataetikett:

import aspose.slides as slides
import aspose.slides.charts as charts
import aspose.pydrawing as draw

# Skapa en instans av Presentation-klassen.
with slides.Presentation() as presentation:

    # Hämta en bildreferens med index.
    slide = presentation.slides[0]

    # Skapa ett PercentsStackedColumn-diagram på bilden.
    chart = slide.shapes.add_chart(charts.ChartType.PERCENTS_STACKED_COLUMN, 20, 20, 600, 400)

    chart.axes.vertical_axis.is_number_format_linked_to_source = False
    chart.axes.vertical_axis.number_format = "0.00%"

    chart.chart_data.series.clear()

    # Hämta diagrammets dataarbetsbok.
    workbook = chart.chart_data.chart_data_workbook
    worksheet_index = 0

    # Lägg till en ny serie.
    series = chart.chart_data.series.add(workbook.get_cell(worksheet_index, 0, 1, "Reds"), chart.type)
    series.data_points.add_data_point_for_bar_series(workbook.get_cell(worksheet_index, 1, 1, 0.30))
    series.data_points.add_data_point_for_bar_series(workbook.get_cell(worksheet_index, 2, 1, 0.50))
    series.data_points.add_data_point_for_bar_series(workbook.get_cell(worksheet_index, 3, 1, 0.80))
    series.data_points.add_data_point_for_bar_series(workbook.get_cell(worksheet_index, 4, 1, 0.65))

    # Ställ in seriens fyllningsfärg.
    series.format.fill.fill_type = slides.FillType.SOLID
    series.format.fill.solid_fill_color.color = draw.Color.red

    # Ställ in etikettformatets egenskaper.
    series.labels.default_data_label_format.show_value = True
    series.labels.default_data_label_format.is_number_format_linked_to_source = False
    series.labels.default_data_label_format.number_format = "0.0%"
    series.labels.default_data_label_format.text_format.portion_format.font_height = 10
    series.labels.default_data_label_format.text_format.portion_format.fill_format.fill_type = slides.FillType.SOLID
    series.labels.default_data_label_format.text_format.portion_format.fill_format.solid_fill_color.color = draw.Color.white
    series.labels.default_data_label_format.show_value = True

    # Lägg till en ny serie.
    series2 = chart.chart_data.series.add(workbook.get_cell(worksheet_index, 0, 2, "Blues"), chart.type)
    series2.data_points.add_data_point_for_bar_series(workbook.get_cell(worksheet_index, 1, 2, 0.70))
    series2.data_points.add_data_point_for_bar_series(workbook.get_cell(worksheet_index, 2, 2, 0.50))
    series2.data_points.add_data_point_for_bar_series(workbook.get_cell(worksheet_index, 3, 2, 0.20))
    series2.data_points.add_data_point_for_bar_series(workbook.get_cell(worksheet_index, 4, 2, 0.35))

    # Ställ in fyllningstyp och färg.
    series2.format.fill.fill_type = slides.FillType.SOLID
    series2.format.fill.solid_fill_color.color = draw.Color.blue
    series2.labels.default_data_label_format.show_value = True
    series2.labels.default_data_label_format.is_number_format_linked_to_source = False
    series2.labels.default_data_label_format.number_format = "0.0%"
    series2.labels.default_data_label_format.text_format.portion_format.font_height = 10
    series2.labels.default_data_label_format.text_format.portion_format.fill_format.fill_type = slides.FillType.SOLID
    series2.labels.default_data_label_format.text_format.portion_format.fill_format.solid_fill_color.color = draw.Color.white

    # Spara presentationen.
    presentation.save("percentage_sign.pptx", slides.export.SaveFormat.PPTX)

Ange etikettavstånd från axel

Detta avsnitt visar hur du styr avståndet mellan dataetiketter och diagrammets axel i Aspose.Slides. Att justera detta avstånd hjälper till att undvika överlappningar och förbättrar läsbarheten i täta visualiseringar.

Följande Python-kod visar hur du anger etikettavståndet från kategoraxeln när du arbetar med ett axelbaserat diagram:

import aspose.slides as slides
import aspose.slides.charts as charts

# Skapa en instans av Presentation-klassen.
with slides.Presentation() as presentation:
    # Hämta en bildreferens.
    slide = presentation.slides[0]

    # Skapa ett grupperat stapeldiagram på bilden.
    chart = slide.shapes.add_chart(charts.ChartType.CLUSTERED_COLUMN, 20, 20, 500, 300)

    # Ställ in etikettavståndet från kategorins (horisontella) axel.
    chart.axes.horizontal_axis.label_offset = 500

    # Spara presentationen.
    presentation.save("axis_label_distance.pptx", slides.export.SaveFormat.PPTX)

Justera etikettposition

När du skapar ett diagram som inte använder axlar, till exempel ett pajdiagram, kan dataetiketterna ligga för nära kanten. I så fall justerar du etikettpositionen så att ledlinjerna visas tydligt.

Följande Python-kod visar hur du justerar etikettpositionen i ett pajdiagram:

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.PIE, 50, 50, 600, 300)

    series = chart.chart_data.series[0]
    series.labels.default_data_label_format.show_value = True
    series.labels.default_data_label_format.show_leader_lines = True

    label = series.labels[0]
    label.data_label_format.position = charts.LegendDataLabelPosition.OUTSIDE_END

    label.x = 0.05
    label.y = 0.1

    presentation.save("presentation.pptx", slides.export.SaveFormat.PPTX)

Ändrad etikettposition

FAQ

Hur kan jag förhindra att dataetiketter överlappar i täta diagram?

Kombinera automatisk etikettplacering, ledlinjer och mindre teckensnitt; om nödvändigt, dölja vissa fält (till exempel kategorin) eller visa etiketter endast för extrema/nyckelpunkter.

Hur kan jag inaktivera etiketter endast för noll-, negativa eller tomma värden?

Filtrera datapunkter innan du aktiverar etiketter och stäng av visning för värden som är 0, negativa värden eller saknade värden enligt en definierad regel.

Hur kan jag säkerställa en konsekvent etikettstil vid export till PDF/bilder?

Ange explicit teckensnitt (familj, storlek) och verifiera att teckensnittet finns tillgängligt på renderingssidan för att undvika reservteckensnitt.