مدیریت فراخوان‌ها در نمودارهای ارائه با استفاده از Python

نمای کلی

این مقاله توضیح می‌دهد که چگونه با فراخوان‌ها برای برچسب‌های داده نمودار در Aspose.Slides کار کنید. این مقاله نشان می‌دهد چگونه از متد setShowLabelAsDataCallout برای نمایش برچسب‌ها به‌صورت فراخوان استفاده شود، چگونه تنظیمات برچسب مرتبط با فراخوان برای نمودار دونات پیکربندی شود، و اشاره می‌کند که فراخوان‌ها و ظاهر آن‌ها هنگام صادرات ارائه‌ها به فرمت‌های PDF، HTML5، SVG و تصاویر رستر حفظ می‌شوند.

استفاده از Callouts

متدهای getShowLabelAsDataCallout و setShowLabelAsDataCallout در کلاس DataLabelFormat تعیین می‌کنند که آیا برچسب داده نمودار به‌صورت فراخوان یا به‌صورت برچسب داده معمولی نمایش داده شود.

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import ChartType, Presentation, SaveFormat

presentation = Presentation()
try:
    chart = presentation.getSlides().get_Item(0).getShapes().addChart(ChartType.Pie, 50, 50, 500, 400)
    labels = chart.getChartData().getSeries().get_Item(0).getLabels()
    default_label_format = labels.getDefaultDataLabelFormat()
    default_label_format.setShowValue(True)
    default_label_format.setShowLabelAsDataCallout(True)
    labels.get_Item(2).getDataLabelFormat().setShowLabelAsDataCallout(False)

    presentation.save("DisplayCharts.pptx", SaveFormat.Pptx)
finally:
    presentation.dispose()

تنظیم Callout برای نمودار دونات

Aspose.Slides برای Python از طریق Java از تنظیم شکل فراخوان برچسب داده سری برای یک نمودار دونات پشتیبانی می‌کند. مثال زیر این را نشان می‌دهد.

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import ChartType, FillType, FontData, LineDashStyle, LineStyle, NullableBool, Presentation, SaveFormat, TextAutofitType

Color = jpype.JClass("java.awt.Color")

presentation = Presentation()
try:
    slide = presentation.getSlides().get_Item(0)
    chart = slide.getShapes().addChart(ChartType.Doughnut, 10, 10, 500, 500, False)
    workbook = chart.getChartData().getChartDataWorkbook()
    chart.getChartData().getSeries().clear()
    chart.getChartData().getCategories().clear()
    chart.setLegend(False)

    for series_index in range(15):
        series_cell = workbook.getCell(0, 0, series_index + 1, f"SERIES {series_index}")
        series = chart.getChartData().getSeries().add(series_cell, chart.getType())
        series.setExplosion(0)
        series.getParentSeriesGroup().setDoughnutHoleSize(jpype.JByte(20))
        series.getParentSeriesGroup().setFirstSliceAngle(351)

    for category_index in range(15):
        category_cell = workbook.getCell(0, category_index + 1, 0, f"CATEGORY {category_index}")
        chart.getChartData().getCategories().add(category_cell)
        for i in range(chart.getChartData().getSeries().size()):
            series = chart.getChartData().getSeries().get_Item(i)
            data_cell = workbook.getCell(0, category_index + 1, i + 1, jpype.JInt(1))
            data_point = series.getDataPoints().addDataPointForDoughnutSeries(data_cell)
            data_point.getFormat().getFill().setFillType(FillType.Solid)
            line_format = data_point.getFormat().getLine()
            line_format.getFillFormat().setFillType(FillType.Solid)
            line_format.getFillFormat().getSolidFillColor().setColor(Color.WHITE)
            line_format.setWidth(1)
            line_format.setStyle(LineStyle.Single)
            line_format.setDashStyle(LineDashStyle.Solid)
            if i == chart.getChartData().getSeries().size() - 1:
                label = data_point.getLabel()
                label.getTextFormat().getTextBlockFormat().setAutofitType(TextAutofitType.Shape)
                label_format = label.getDataLabelFormat()
                portion_format = label_format.getTextFormat().getPortionFormat()
                portion_format.setFontBold(NullableBool.True_)
                font = FontData("DINPro-Bold")
                portion_format.setLatinFont(font)
                portion_format.setFontHeight(12)
                portion_format.getFillFormat().setFillType(FillType.Solid)
                portion_format.getFillFormat().getSolidFillColor().setColor(Color.LIGHT_GRAY)
                label_format.getFormat().getLine().getFillFormat().getSolidFillColor().setColor(Color.WHITE)
                label_format.setShowValue(False)
                label_format.setShowCategoryName(True)
                label_format.setShowSeriesName(False)
                label_format.setShowLeaderLines(True)
                label_format.setShowLabelAsDataCallout(False)
                chart.validateChartLayout()
                label.setX(label.getX() + 0.5)
                label.setY(label.getY() + 0.5)

    presentation.save("chart.pptx", SaveFormat.Pptx)
finally:
    presentation.dispose()

سوالات متداول

آیا فراخوان‌ها هنگام تبدیل ارائه به PDF، HTML5، SVG یا تصاویر حفظ می‌شوند؟

بله. فراخوان‌ها بخشی از رندر نمودار هستند، بنابراین هنگام صادرات به PDF، HTML5، SVG، یا raster images، آن‌ها همراه با قالب‌بندی اسلاید حفظ می‌شوند.

آیا قلم‌های سفارشی در فراخوان‌ها کار می‌کنند و آیا ظاهر آن‌ها می‌تواند در زمان صادرات حفظ شود؟

بله. Aspose.Slides از embedding fonts در ارائه پشتیبانی می‌کند و در طول صادرات مانند PDF، تعبیه قلم‌ها را کنترل می‌نماید تا فراخوان‌ها در سیستم‌های مختلف به‌یک شکل ظاهر شوند.