Personalizar Gráficos de Pizza em Apresentações Usando Python via Java
Visão geral
Este artigo explica como trabalhar com gráficos de pizza no Aspose.Slides. Ele mostra como configurar opções de plot secundário para os gráficos Pie of Pie e Bar of Pie, e como habilitar a coloração automática de fatias para um gráfico de pizza padrão.
Os exemplos concentram‑se em tarefas de personalização de gráficos, como adicionar um gráfico a um slide, ajustar as configurações de séries e rótulos, substituir os dados padrão do gráfico por categorias e valores personalizados e salvar a apresentação atualizada.
Opções de Plot Secundário para Gráficos Pie of Pie e Bar of Pie
O Aspose.Slides for Python via Java oferece suporte a opções de plot secundário para os gráficos Pie of Pie e Bar of Pie. Essas opções controlam o tamanho do plot secundário e como os pontos de dados são divididos entre os dois plots.
O exemplo a seguir cria um gráfico Pie of Pie em uma nova apresentação e exibe os valores dos pontos de dados como rótulos. O método setSecondPieSize define o tamanho do plot secundário como 149% do plot principal. setPieSplitBy seleciona a divisão baseada em porcentagem, e setPieSplitPosition define o limite em 53%.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import ChartType, PieSplitType, Presentation, SaveFormat
presentation = Presentation()
try:
slide = presentation.getSlides().get_Item(0)
chart = slide.getShapes().addChart(ChartType.PieOfPie, 50, 50, 500, 400)
series = chart.getChartData().getSeries().get_Item(0)
# Exibir valores e configurar o plot secundário.
series.getLabels().getDefaultDataLabelFormat().setShowValue(True)
series_group = series.getParentSeriesGroup()
series_group.setSecondPieSize(149)
series_group.setPieSplitBy(PieSplitType.ByPercentage)
series_group.setPieSplitPosition(53)
presentation.save("pie_of_pie.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
Selecionar Categorias para o Plot Secundário
Use divisão personalizada quando desejar agrupar categorias específicas no plot secundário, independentemente de seus valores percentuais. Por exemplo, um relatório de vendas pode mostrar Online e Events juntos para que os leitores comparem esses dois canais, mesmo que representem 35% e 10% das vendas totais.
Chame setPieSplitBy com PieSplitType.Custom e selecione os pontos através de getPieSplitCustomPoints. O método add da coleção aceita um índice baseado em zero na série; use addItem para adicionar um objeto de ponto de dados. Neste exemplo, o índice 1 seleciona Online e o ponto no índice 3 seleciona Events. Partners também é adicionado temporariamente, depois excluído usando removeItem.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import ChartType, PieSplitType, Presentation, SaveFormat
presentation = Presentation()
try:
slide = presentation.getSlides().get_Item(0)
chart = slide.getShapes().addChart(ChartType.PieOfPie, 50, 50, 600, 200)
# Substitua os dados padrão por vendas por canal.
workbook = chart.getChartData().getChartDataWorkbook()
chart.getChartData().getSeries().clear()
chart.getChartData().getCategories().clear()
category_names = ["Retail", "Online", "Partners", "Events"]
values = [40, 35, 15, 10]
series_name_cell = workbook.getCell(0, 0, 1, "Sales")
series = chart.getChartData().getSeries().add(series_name_cell, chart.getType())
for i in range(len(category_names)):
category_cell = workbook.getCell(0, i + 1, 0, category_names[i])
chart.getChartData().getCategories().add(category_cell)
value_cell = workbook.getCell(0, i + 1, 1, jpype.JInt(values[i]))
series.getDataPoints().addDataPointForPieSeries(value_cell)
series.getLabels().getDefaultDataLabelFormat().setShowValue(True)
series_group = series.getParentSeriesGroup()
series_group.setPieSplitBy(PieSplitType.Custom)
series_group.setColorVaried(True)
# Selecione Online pelo seu índice baseado em zero e Events pelo seu objeto de ponto de dados.
series_group.getPieSplitCustomPoints().add(1)
series_group.getPieSplitCustomPoints().addItem(series.getDataPoints().get_Item(3))
# Exclua Partners da seleção sem excluir seus dados de origem.
series_group.getPieSplitCustomPoints().add(2)
series_group.getPieSplitCustomPoints().removeItem(series.getDataPoints().get_Item(2))
presentation.save("pie_of_pie_custom.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
Online (35) e Events (10) aparecem como fatias separadas no plot secundário. No plot principal, eles são representados por uma única fatia combinada com valor 45, junto com Retail (40) e Partners (15). Remover Partners da seleção personalizada mantém‑no no plot principal; não remove a categoria ou seu valor dos dados de origem do gráfico.
A imagem a seguir mostra a apresentação salva no PowerPoint:

Definir Cores Automáticas de Fatias do Gráfico de Pizza
O Aspose.Slides for Python via Java pode atribuir automaticamente cores diferentes às fatias de um gráfico de pizza. O exemplo a seguir cria um gráfico de pizza com um título centralizado e substitui os dados padrão por três categorias trimestrais e seus valores. O método setShowValue exibe os valores 20, 50 e 30 como rótulos, enquanto setColorVaried habilita uma cor distinta para cada fatia.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import ChartType, NullableBool, Presentation, SaveFormat
presentation = Presentation()
try:
slide = presentation.getSlides().get_Item(0)
chart = slide.getShapes().addChart(ChartType.Pie, 100, 100, 400, 400)
# Adicionar um título de gráfico centrado.
chart.getChartTitle().addTextFrameForOverriding("Sample Title")
chart.getChartTitle().getTextFrameForOverriding().getTextFrameFormat().setCenterText(NullableBool.True_)
chart.getChartTitle().setHeight(20)
chart.setTitle(True)
# Substituir os dados padrão usando a primeira planilha.
workbook = chart.getChartData().getChartDataWorkbook()
worksheet_index = 0
chart.getChartData().getSeries().clear()
chart.getChartData().getCategories().clear()
category_names = ["First Qtr", "2nd Qtr", "3rd Qtr"]
values = [20, 50, 30]
series_name_cell = workbook.getCell(worksheet_index, 0, 1, "Series 1")
series = chart.getChartData().getSeries().add(series_name_cell, chart.getType())
for i in range(len(category_names)):
category_cell = workbook.getCell(worksheet_index, i + 1, 0, category_names[i])
chart.getChartData().getCategories().add(category_cell)
value_cell = workbook.getCell(worksheet_index, i + 1, 1, jpype.JInt(values[i]))
series.getDataPoints().addDataPointForPieSeries(value_cell)
# Exibir valores e atribuir cores diferentes às fatias.
series.getLabels().getDefaultDataLabelFormat().setShowValue(True)
series.getParentSeriesGroup().setColorVaried(True)
presentation.save("pie.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
Perguntas Frequentes
As variações Pie of Pie e Bar of Pie são suportadas?
Sim, a biblioteca suporta um plot secundário para gráficos de pizza, incluindo os tipos Pie of Pie e Bar of Pie.
Posso exportar apenas o gráfico como imagem (por exemplo, PNG)?
Sim, você pode exportar o próprio gráfico como imagem (como PNG) sem exportar a apresentação completa.