Zarządzanie etykietami danych wykresu w prezentacjach przy użyciu Pythona
Przegląd
Etykiety danych na wykresie pokazują szczegóły dotyczące serii danych wykresu lub poszczególnych punktów danych. Pozwalają czytelnikom szybko zidentyfikować serie danych i ułatwiają zrozumienie wykresów. W Aspose.Slides for Python możesz włączać, dostosowywać i formatować etykiety danych dla dowolnego wykresu — wybierając, co wyświetlać (wartości, procenty, nazwy serii lub kategorii), gdzie umieszczać etykiety oraz jak mają wyglądać (czcionka, format liczbowy, separatory, linie prowadzące i inne). Ten artykuł opisuje najważniejsze interfejsy API i przykłady, których potrzebujesz, aby dodać przejrzyste, informacyjne etykiety do wykresów.
Ustaw precyzję etykiet danych
Etykiety danych wykresu często wyświetlają wartości liczbowe, które wymagają jednolitej precyzji. W tej sekcji pokazano, jak kontrolować liczbę miejsc dziesiętnych w etykietach danych w Aspose.Slides, stosując odpowiedni format liczbowy.
Poniższy przykład w Pythonie pokazuje, jak ustawić precyzję liczbową dla etykiet danych wykresu:
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)
Wyświetl procenty jako etykiety
Za pomocą Aspose.Slides możesz wyświetlać procenty jako etykiety danych na wykresach. Poniższy przykład oblicza udział każdego punktu w jego kategorii i formatuje etykietę tak, aby wyświetlała procent.
import aspose.slides as slides
import aspose.slides.charts as charts
# Utwórz instancję klasy Presentation.
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
# Zapisz prezentację zawierającą wykres.
presentation.save("percentage_as_label.pptx", slides.export.SaveFormat.PPTX)
Pokaż znak procenta w etykietach danych wykresu
W tej sekcji pokazano, jak wyświetlać procenty w etykietach danych wykresu i dodawać znak procenta za pomocą Aspose.Slides. Dowiesz się, jak włączać wartości procentowe dla całych serii lub konkretnych punktów (idealne dla wykresów kołowych, pierścieniowych i wykresów skumulowanych 100 %), oraz jak kontrolować formatowanie za pomocą opcji etykiety lub własnego formatu liczbowego.
Poniższy przykład w Pythonie pokazuje, jak dodać znak procenta do etykiety danych wykresu:
import aspose.slides as slides
import aspose.slides.charts as charts
import aspose.pydrawing as draw
# Utwórz instancję klasy Presentation.
with slides.Presentation() as presentation:
# Uzyskaj referencję do slajdu po indeksie.
slide = presentation.slides[0]
# Utwórz wykres PercentsStackedColumn na slajdzie.
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()
# Uzyskaj skoroszyt danych wykresu.
workbook = chart.chart_data.chart_data_workbook
worksheet_index = 0
# Dodaj nową serię.
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))
# Ustaw kolor wypełnienia serii.
series.format.fill.fill_type = slides.FillType.SOLID
series.format.fill.solid_fill_color.color = draw.Color.red
# Ustaw właściwości formatu etykiety.
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
# Dodaj nową serię.
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))
# Ustaw typ wypełnienia i kolor.
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
# Zapisz prezentację.
presentation.save("percentage_sign.pptx", slides.export.SaveFormat.PPTX)
Ustaw odległość etykiety od osi
W tej sekcji pokazano, jak kontrolować odległość między etykietami danych a osią wykresu w Aspose.Slides. Dostosowanie tego offsetu pomaga zapobiegać nakładaniu się etykiet i poprawia czytelność w gęstych wizualizacjach.
Poniższy kod w Pythonie pokazuje, jak ustawić odległość etykiety od osi kategorii przy pracy z wykresem opartym na osiach:
import aspose.slides as slides
import aspose.slides.charts as charts
# Utwórz instancję klasy Presentation.
with slides.Presentation() as presentation:
# Pobierz referencję do slajdu.
slide = presentation.slides[0]
# Utwórz wykres kolumnowy grupowany na slajdzie.
chart = slide.shapes.add_chart(charts.ChartType.CLUSTERED_COLUMN, 20, 20, 500, 300)
# Ustaw odległość etykiety od osi kategorii (poziomej).
chart.axes.horizontal_axis.label_offset = 500
# Zapisz prezentację.
presentation.save("axis_label_distance.pptx", slides.export.SaveFormat.PPTX)
Dostosuj pozycję etykiety
Kiedy tworzysz wykres, który nie używa osi, na przykład wykres kołowy, etykiety danych mogą być zbyt blisko krawędzi. W takim przypadku dostosuj pozycję etykiety, aby linie prowadzące były wyraźnie widoczne.
Poniższy kod w Pythonie pokazuje, jak dostosować pozycję etykiety na wykresie kołowym:
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)

FAQ
Jak mogę zapobiec nakładaniu się etykiet danych na gęstych wykresach?
Połącz automatyczne rozmieszczanie etykiet, linie prowadzące oraz zmniejszenie rozmiaru czcionki; w razie potrzeby ukryj niektóre pola (np. kategorię) lub wyświetlaj etykiety tylko dla punktów skrajnych/kluczowych.
Jak mogę wyłączyć etykiety tylko dla wartości zerowych, ujemnych lub pustych?
Przefiltruj punkty danych przed włączeniem etykiet i wyłącz wyświetlanie dla wartości 0, wartości ujemnych lub brakujących zgodnie z określoną regułą.
Jak mogę zapewnić spójny styl etykiet przy eksportowaniu do PDF/obrazów?
Jawnie ustaw czcionki (rodzina, rozmiar) i sprawdź, czy czcionka jest dostępna po stronie renderowania, aby uniknąć użycia zastępczego.