Personalizar gráficos de pizza em apresentações no Android

Visão geral

Este artigo explica como trabalhar com gráficos de pizza no Aspose.Slides. Ele mostra como configurar opções de gráfico secundário para gráficos Pie of Pie e Bar of Pie, e como habilitar a coloração automática das fatias em um gráfico de pizza padrão.

Os exemplos focam 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 Gráfico Secundário para Pie of Pie e Bar of Pie

Aspose.Slides for Android via Java oferece suporte a opções de gráfico secundário para gráficos Pie of Pie e Bar of Pie. Essas opções controlam o tamanho do gráfico secundário e como os pontos de dados são divididos entre os dois gráficos.

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 gráfico secundário como 149 % do gráfico principal. setPieSplitBy seleciona a divisão baseada em percentual, e setPieSplitPosition define o limite para 53 %.

import com.aspose.slides.*;

Presentation presentation = new Presentation();
try {
    ISlide slide = presentation.getSlides().get_Item(0);

    IChart chart = slide.getShapes().addChart(ChartType.PieOfPie, 50, 50, 500, 400);
    IChartSeries series = chart.getChartData().getSeries().get_Item(0);

    // Exibir valores e configurar o gráfico secundário.
    series.getLabels().getDefaultDataLabelFormat().setShowValue(true);
    IChartSeriesGroup seriesGroup = series.getParentSeriesGroup();
    seriesGroup.setSecondPieSize(149);
    seriesGroup.setPieSplitBy(PieSplitType.ByPercentage);
    seriesGroup.setPieSplitPosition(53);

    presentation.save("pie_of_pie.pptx", SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

Selecionar categorias para o gráfico secundário

Use divisão personalizada quando quiser agrupar categorias específicas no gráfico 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, embora 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 com.aspose.slides.*;

Presentation presentation = new Presentation();
try {
    ISlide slide = presentation.getSlides().get_Item(0);

    IChart chart = slide.getShapes().addChart(ChartType.PieOfPie, 50, 50, 600, 200);

    // Substituir os dados padrão por vendas por canal.
    IChartDataWorkbook workbook = chart.getChartData().getChartDataWorkbook();
    chart.getChartData().getSeries().clear();
    chart.getChartData().getCategories().clear();
    String[] categoryNames = { "Retail", "Online", "Partners", "Events" };
    int[] values = { 40, 35, 15, 10 };
    IChartDataCell seriesNameCell = workbook.getCell(0, 0, 1, "Sales");
    IChartSeries series = chart.getChartData().getSeries().add(seriesNameCell, chart.getType());

    for (int i = 0; i < categoryNames.length; i++) {
        IChartDataCell categoryCell = workbook.getCell(0, i + 1, 0, categoryNames[i]);
        chart.getChartData().getCategories().add(categoryCell);

        IChartDataCell valueCell = workbook.getCell(0, i + 1, 1, values[i]);
        series.getDataPoints().addDataPointForPieSeries(valueCell);
    }

    series.getLabels().getDefaultDataLabelFormat().setShowValue(true);
    IChartSeriesGroup seriesGroup = series.getParentSeriesGroup();
    seriesGroup.setPieSplitBy(PieSplitType.Custom);
    seriesGroup.setColorVaried(true);

    // Selecionar Online pelo seu índice baseado em zero e Events pelo seu objeto de ponto de dados.
    seriesGroup.getPieSplitCustomPoints().add(1);
    seriesGroup.getPieSplitCustomPoints().addItem(series.getDataPoints().get_Item(3));

    // Excluir Partners da seleção sem excluir seus dados de origem.
    seriesGroup.getPieSplitCustomPoints().add(2);
    seriesGroup.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 gráfico secundário. No gráfico principal, eles são representados por uma fatia combinada com valor 45, ao lado de Retail (40) e Partners (15). Remover Partners da seleção personalizada mantém-o no gráfico principal; ele não é removido da categoria nem do seu valor dos dados de origem do gráfico.

A imagem a seguir mostra a apresentação salva no PowerPoint:

Gráfico Pie of Pie com Online e Events no gráfico secundário e seu valor combinado de 45 no gráfico principal

Definir cores automáticas das fatias do gráfico de pizza

Aspose.Slides for Android 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 com.aspose.slides.*;

Presentation presentation = new Presentation();
try {
    ISlide slide = presentation.getSlides().get_Item(0);

    IChart chart = slide.getShapes().addChart(ChartType.Pie, 100, 100, 400, 400);

    // Adicionar um título de gráfico centralizado.
    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.
    IChartDataWorkbook workbook = chart.getChartData().getChartDataWorkbook();
    int worksheetIndex = 0;
    chart.getChartData().getSeries().clear();
    chart.getChartData().getCategories().clear();
    String[] categoryNames = { "First Qtr", "2nd Qtr", "3rd Qtr" };
    int[] values = { 20, 50, 30 };
    IChartDataCell seriesNameCell = workbook.getCell(worksheetIndex, 0, 1, "Series 1");
    IChartSeries series = chart.getChartData().getSeries().add(seriesNameCell, chart.getType());

    for (int i = 0; i < categoryNames.length; i++) {
        IChartDataCell categoryCell = workbook.getCell(worksheetIndex, i + 1, 0, categoryNames[i]);
        chart.getChartData().getCategories().add(categoryCell);

        IChartDataCell valueCell = workbook.getCell(worksheetIndex, i + 1, 1, values[i]);
        series.getDataPoints().addDataPointForPieSeries(valueCell);
    }

    // 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();
}

FAQ

As variações Pie of Pie e Bar of Pie são suportadas?

Sim, a biblioteca suporta um gráfico 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 inteira.