Dostosowywanie legend wykresów w prezentacjach przy użyciu Pythona

Przegląd

Aspose.Slides for Python via .NET oferuje opcje dostosowywania legend wykresów w prezentacjach PowerPoint. Ten artykuł pokazuje, jak ustawić położenie i rozmiar legendy, określić rozmiar czcionki dla całej legendy, sformatować pojedynczy wpis legendy oraz ukryć lub przywrócić wybrane pozycje.

FAQ opisuje powiązane zachowania, w tym rezerwowanie miejsca dla legendy, wyświetlanie etykiet wieloliniowych oraz dziedziczenie formatowania z motywu prezentacji.

Pozycjonowanie legendy

Użyj właściwości legendy x, y, szerokość, i wysokość, aby określić jej położenie i rozmiar jako ułamki wymiarów wykresu.

Ten przykład tworzy prezentację i dodaje wykres słupkowy skumulowany z domyślnymi danymi do pierwszego slajdu. Podzielenie żądanych przesunięć i wymiarów legendy przez szerokość i wysokość wykresu konwertuje je na wartości względne: legenda jest przesunięta o 50 punktów od lewego górnego rogu wykresu i ma rozmiar 100 na 100 punktów.

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.CLUSTERED_COLUMN, 50, 50, 500, 500)

    # Wyraź pozycję i rozmiar legendy względem wykresu.
    chart.legend.x = 50 / chart.width
    chart.legend.y = 50 / chart.height
    chart.legend.width = 100 / chart.width
    chart.legend.height = 100 / chart.height

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

Ustawienie rozmiaru czcionki legendy

Użyj właściwości legendy text_format , aby uzyskać dostęp do formatowania tekstu i ustaw font_height w punktach.

Ten przykład tworzy wykres z domyślnymi danymi i ustawia tekst legendy na 20 punktów. Wyłącza także automatyczne granice dla osi pionowej i ustawia jej zakres od -5 do 10.

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.CLUSTERED_COLUMN, 50, 50, 600, 400)

    chart.legend.text_format.portion_format.font_height = 20
    chart.axes.vertical_axis.is_automatic_min_value = False
    chart.axes.vertical_axis.min_value = -5
    chart.axes.vertical_axis.is_automatic_max_value = False
    chart.axes.vertical_axis.max_value = 10

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

Ustawienie rozmiaru czcionki pojedynczego wpisu legendy

Użyj kolekcji entries , aby uzyskać dostęp do formatowania konkretnego wpisu legendy. Indeksy wpisów są zerowe, więc indeks 1 odnosi się do drugiego wpisu.

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

with slides.Presentation() as presentation:
    slide = presentation.slides[0]

    chart = slide.shapes.add_chart(charts.ChartType.CLUSTERED_COLUMN, 50, 50, 600, 400)

    text_format = chart.legend.entries[1].text_format
    text_format.portion_format.font_bold = slides.NullableBool.TRUE
    text_format.portion_format.font_height = 20
    text_format.portion_format.font_italic = slides.NullableBool.TRUE
    text_format.portion_format.fill_format.fill_type = slides.FillType.SOLID
    text_format.portion_format.fill_format.solid_fill_color.color = draw.Color.blue

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

Ukrywanie pojedynczych wpisów legendy

Aby wykluczyć dodatkową serię z legendy, zachowując jednocześnie widoczność jej danych, ustaw ILegendEntryProperties.hide na True poprzez IChartSeries.related_legend_entry. To ukrywa tylko wybrany wpis legendy; nie usuwa serii ani jej punktów danych. Natomiast ustawienie IChart.has_legend na False ukrywa całą legendę.

Poniższy przykład tworzy wykres słupkowy skumulowany z wieloma seriami przy użyciu domyślnych danych. Ukrywa wpis legendy drugiej serii (indeks 1) i zapisuje prezentację. Następnie przywraca ten wpis, ustawiając hide na False i zapisuje drugą kopię. Kolumny pozostają widoczne w obu plikach.

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.CLUSTERED_COLUMN, 50, 50, 600, 400)
    chart.has_legend = True

    legend_entry = chart.chart_data.series[1].related_legend_entry
    legend_entry.hide = True

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

    # Przywróć ten sam wpis bez zmiany danych wykresu.
    legend_entry.hide = False

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

Poniższe porównanie pokazuje ten sam wykres ze wszystkimi widocznymi wpisami legendy oraz z ukrytym serią 2 w legendzie; wszystkie kolumny pozostają widoczne.

Porównanie wykresu ze wszystkimi widocznymi wpisami legendy oraz z ukrytym serią 2 w legendzie; wszystkie kolumny pozostają widoczne.

W wykresach kolumnowych, słupkowych i liniowych wpisy legendy identyfikują serie. W wykresach kołowych identyfikują one pojedyncze punkty danych (segmenty), więc zamiast tego użyj IChartDataPoint.related_legend_entry na wybranym segmencie. API dokumentuje tę właściwość punktu danych dla typów wykresów PIE, PIE3D, EXPLODED_PIE, EXPLODED_PIE3D, PIE_OF_PIE oraz BAR_OF_PIE. Nie zakładaj, że ma zastosowanie do wykresów pierścieniowych, które nie są wymienione na tej liście.

FAQ

Czy mogę sprawić, że wykres przydzieli miejsce dla legendy zamiast nakładać ją?

Tak. Ustaw overlay na False, aby zarezerwować miejsce dla legendy zamiast pozwalać jej nakładać się na obszar wykresu.

Czy mogę tworzyć wieloliniowe etykiety legendy?

Tak. Długie etykiety mogą się zawijać, gdy dostępna szerokość jest niewystarczająca. Możesz także używać znaków nowej linii w nazwach serii, aby wymusić podziały linii.

Jak sprawić, aby legenda korzystała ze schematu kolorów motywu prezentacji?

Pozostaw kolory, wypełnienia i czcionki legendy nieustawione, aby mogła dziedziczyć formatowanie motywu. Jawne formatowanie zastępuje odpowiadające ustawienia motywu.