Obtenha a posição real do rótulo de dados do gráfico em slides Java

Introdução para obter a posição real do rótulo de dados do gráfico em slides Java

Neste tutorial, você aprenderá como recuperar a posição real dos rótulos de dados do gráfico usando Aspose.Slides para Java. Criaremos um programa Java que gera uma apresentação em PowerPoint com um gráfico, personaliza os rótulos de dados e depois adiciona formas que representam as posições desses rótulos de dados.

Pré-requisitos

Antes de começar, certifique-se de ter a biblioteca Aspose.Slides para Java configurada em seu projeto Java.

Etapa 1: crie uma apresentação em PowerPoint

Primeiro, vamos criar uma nova apresentação em PowerPoint e adicionar um gráfico a ela. Personalizaremos os rótulos de dados do gráfico posteriormente neste tutorial.

// O caminho para o diretório de documentos.
String dataDir = "Your Document Directory";
Presentation pres = new Presentation();
try {
    IChart chart = pres.getSlides().get_Item(0).getShapes().addChart(ChartType.ClusteredColumn, 50, 50, 500, 400);
    chart.validateChartLayout();
} finally {
    if (pres != null) pres.dispose();
}

Etapa 2: personalizar rótulos de dados

Agora, vamos personalizar os rótulos de dados da série de gráficos. Definiremos sua posição e mostraremos os valores.

try {
    // ... (código anterior)
    for (IChartSeries series : chart.getChartData().getSeries()) {
        series.getLabels().getDefaultDataLabelFormat().setPosition(LegendDataLabelPosition.OutsideEnd);
        series.getLabels().getDefaultDataLabelFormat().setShowValue(true);
    }
    // ... (código restante)
} finally {
    if (pres != null) pres.dispose();
}

Etapa 3: Obtenha a posição real dos rótulos de dados

Nesta etapa, iremos iterar pelos pontos de dados da série de gráficos e recuperar a posição real dos rótulos de dados que possuem um valor maior que 4. Em seguida, adicionaremos elipses para representar essas posições.

try {
    // ... (código anterior)
    for (IChartSeries series : chart.getChartData().getSeries()) {
        for (IChartDataPoint point : series.getDataPoints()) {
            if (point.getValue().toDouble() > 4) {
                float x = point.getLabel().getActualX();
                float y = point.getLabel().getActualY();
                float w = point.getLabel().getActualWidth();
                float h = point.getLabel().getActualHeight();
                IAutoShape shape = chart.getUserShapes().getShapes().addAutoShape(ShapeType.Ellipse, x, y, w, h);
                shape.getFillFormat().setFillType(FillType.Solid);
                shape.getFillFormat().getSolidFillColor().setColor(com.aspose.cells.Color.fromArgb(100, 0, 255, 0).d());
            }
        }
    }
    // ... (código restante)
} finally {
    if (pres != null) pres.dispose();
}

Etapa 4: salve a apresentação

Por fim, salve a apresentação gerada em um arquivo.

try {
    // ... (código anterior)
    pres.save(dataDir + "GetActualPositionOFChartDatalabel.pptx", SaveFormat.Pptx);
} finally {
    if (pres != null) pres.dispose();
}

Código-fonte completo para obter a posição real do rótulo de dados do gráfico em slides Java

// O caminho para o diretório de documentos.
String dataDir = "Your Document Directory";
Presentation pres = new Presentation();
try
{
	IChart chart = pres.getSlides().get_Item(0).getShapes().addChart(ChartType.ClusteredColumn, 50, 50, 500, 400);
	for (IChartSeries series : chart.getChartData().getSeries())
	{
		series.getLabels().getDefaultDataLabelFormat().setPosition(LegendDataLabelPosition.OutsideEnd);
		series.getLabels().getDefaultDataLabelFormat().setShowValue(true);
	}
	chart.validateChartLayout();
	for (IChartSeries series : chart.getChartData().getSeries())
	{
		for (IChartDataPoint point : series.getDataPoints())
		{
			if (point.getValue().toDouble() > 4)
			{
				float x = point.getLabel().getActualX();
				float y = point.getLabel().getActualY();
				float w = point.getLabel().getActualWidth();
				float h = point.getLabel().getActualHeight();
				IAutoShape shape = chart.getUserShapes().getShapes().addAutoShape(ShapeType.Ellipse, x, y, w, h);
				shape.getFillFormat().setFillType(FillType.Solid);
				shape.getFillFormat().getSolidFillColor().setColor(com.aspose.cells.Color.fromArgb(100, 0, 255, 0).d());//PENDÊNCIA
			}
		}
	}
	pres.save(dataDir + "GetActualPositionOFChartDatalabel", SaveFormat.Pptx);
}
finally
{
	if (pres != null) pres.dispose();
}

Conclusão

Neste tutorial, você aprendeu como recuperar a posição real dos rótulos de dados do gráfico em Java Slides usando Aspose.Slides for Java. Agora você pode usar esse conhecimento para aprimorar suas apresentações em PowerPoint com rótulos de dados personalizados e representações visuais de suas posições.

Perguntas frequentes

Como posso personalizar rótulos de dados em um gráfico?

Para personalizar rótulos de dados em um gráfico, você pode usar osetDefaultDataLabelFormat método na série de gráficos e definir propriedades como posição e visibilidade. Por exemplo:

for (IChartSeries series : chart.getChartData().getSeries()) {
    series.getLabels().getDefaultDataLabelFormat().setPosition(LegendDataLabelPosition.OutsideEnd);
    series.getLabels().getDefaultDataLabelFormat().setShowValue(true);
}

Como posso adicionar formas para representar as posições dos rótulos de dados?

Você pode iterar pelos pontos de dados de uma série de gráficos e usar o métodogetActualX, getActualY, getActualWidth , egetActualHeightmétodos do rótulo de dados para obter sua posição. Então, você pode adicionar formas usando oaddAutoShape método. Aqui está um exemplo:

float x = point.getLabel().getActualX();
float y = point.getLabel().getActualY();
float w = point.getLabel().getActualWidth();
float h = point.getLabel().getActualHeight();
IAutoShape shape = chart.getUserShapes().getShapes().addAutoShape(ShapeType.Ellipse, x, y, w, h);

Como posso salvar a apresentação gerada?

Você pode salvar a apresentação gerada usando osave método. Forneça o caminho do arquivo desejado e oSaveFormat como parâmetros. Por exemplo:

pres.save(dataDir + "GetActualPositionOFChartDatalabel.pptx", SaveFormat.Pptx);