Gestire le callout nei grafici delle presentazioni con Python

Panoramica

Questo articolo spiega come utilizzare le callout per le etichette dei dati dei grafici in Aspose.Slides. Mostra come usare la proprietà show_label_as_data_callout per visualizzare le etichette come callout, come configurare le impostazioni delle etichette correlate alle callout per un grafico a ciambella e nota che le callout e il loro aspetto vengono conservati quando le presentazioni vengono esportate in PDF, HTML5, SVG e formati di immagine raster.

Utilizzo delle Callout

È stata aggiunta la nuova proprietà show_label_as_data_callout alla classe DataLabelFormat, che determina se l’etichetta dei dati del grafico specificato verrà visualizzata come callout o come etichetta dei dati. Nell’esempio mostrato di seguito, abbiamo impostato le Callout.

import aspose.slides as slides

with slides.Presentation() as presentation:
    chart = presentation.slides[0].shapes.add_chart(slides.charts.ChartType.PIE, 50, 50, 500, 400)
    chart.chart_data.series[0].labels.default_data_label_format.show_value = True
    chart.chart_data.series[0].labels.default_data_label_format.show_label_as_data_callout = True
    chart.chart_data.series[0].labels[2].data_label_format.show_label_as_data_callout = False
    presentation.save("DisplayChartLabels_out.pptx", slides.export.SaveFormat.PPTX)

Impostare la Callout per il Grafico a Ciambella

Aspose.Slides per Python via .NET offre il supporto per impostare la forma della callout dell’etichetta dei dati di una serie per un grafico a ciambella. Di seguito è riportato un esempio.

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

with slides.Presentation() as pres:
    slide = pres.slides[0]
    chart = slide.shapes.add_chart(charts.ChartType.DOUGHNUT, 10, 10, 500, 500, False)
    workBook = chart.chart_data.chart_data_workbook
    chart.chart_data.series.clear()
    chart.chart_data.categories.clear()
    chart.has_legend = False
    seriesIndex = 0
    while seriesIndex < 15:
        series = chart.chart_data.series.add(workBook.get_cell(0, 0, seriesIndex + 1, "SERIES " + str(seriesIndex)), chart.type)
        series.explosion = 0
        series.parent_series_group.doughnut_hole_size = 20
        series.parent_series_group.first_slice_angle = 351
        seriesIndex += 1
    categoryIndex = 0
    while categoryIndex < 15:
        chart.chart_data.categories.add(workBook.get_cell(0, categoryIndex + 1, 0, "CATEGORY " + str(categoryIndex)))
        i = 0
        while i < len(chart.chart_data.series):
            iCS = chart.chart_data.series[i]
            dataPoint = iCS.data_points.add_data_point_for_doughnut_series(workBook.get_cell(0, categoryIndex + 1, i + 1, 1))
            dataPoint.format.fill.fill_type = slides.FillType.SOLID
            dataPoint.format.line.fill_format.fill_type = slides.FillType.SOLID
            dataPoint.format.line.fill_format.solid_fill_color.color = draw.Color.white
            dataPoint.format.line.width = 1
            dataPoint.format.line.style = slides.LineStyle.SINGLE
            dataPoint.format.line.dash_style = slides.LineDashStyle.SOLID
            if i == len(chart.chart_data.series) - 1:
                lbl = dataPoint.label
                lbl.text_format.text_block_format.autofit_type = slides.TextAutofitType.SHAPE
                lbl.data_label_format.text_format.portion_format.font_bold = 1
                lbl.data_label_format.text_format.portion_format.latin_font = slides.FontData("DINPro-Bold")
                lbl.data_label_format.text_format.portion_format.font_height = 12
                lbl.data_label_format.text_format.portion_format.fill_format.fill_type = slides.FillType.SOLID
                lbl.data_label_format.text_format.portion_format.fill_format.solid_fill_color.color = draw.Color.light_gray
                lbl.data_label_format.format.line.fill_format.solid_fill_color.color = draw.Color.white
                lbl.data_label_format.show_value = False
                lbl.data_label_format.show_category_name = True
                lbl.data_label_format.show_series_name = False
                lbl.data_label_format.show_leader_lines = True
                lbl.data_label_format.show_label_as_data_callout = False
                chart.validate_chart_layout()
                lbl.as_i_layoutable.x += 0.5
                lbl.as_i_layoutable.y += 0.5
            i += 1
        categoryIndex +=1 
    pres.save("chart.pptx", slides.export.SaveFormat.PPTX)

FAQ

Le callout vengono conservate quando si converte una presentazione in PDF, HTML5, SVG o immagini?

Sì. Le callout fanno parte del rendering del grafico, quindi quando si esporta in PDF, HTML5, SVG o immagini raster, vengono conservate insieme alla formattazione della diapositiva.

I font personalizzati funzionano nelle callout e il loro aspetto può essere conservato durante l’esportazione?

Sì. Aspose.Slides supporta l’incorporamento dei font nella presentazione e gestisce l’incorporamento dei font durante le esportazioni, come ad esempio in PDF, garantendo che le callout mantengano lo stesso aspetto su sistemi diversi.