Como criar um grafico Pizza no JasperStudio?

Bom dia a todos, tentei vários tutoriais para a criação de um gráfico simples formato pizza, mas nenhum deu certo.

Tenho este relatório:

como eu gostaria que ficasse o gráfico, o valor do relatório é de R$ 21.481,38, e eu tenho neste momento(apenas para teste) apenas 2 produtos cadastrados

Placa Mãe
Placa de Vídeo

gostaria que o gráfico mostrasse o valor total vendido de cada produto e o quanto isso representa em (%)

exemplo:

Placa Mãe - R$ 7.407,36 - 48,36%(exemplo não fiz a conta)
Placa de Vídeo - R$ 14.074,02 - 51,64%(exemplo não fiz a conta)

Vc tentou esse tutorial: http://javasemcafe.blogspot.com/2011/05/jasperreports-401-criando-graficos-no_27.html ?

É importante que a consulta do relatório retorne o total (o valor total do pedido, por exemplo) por registro que será utilizado no gráfico. Para isso, é bem provável que vc tenha que usar SUM e GROUP BY no SQL da consulta.

1 curtida

@Lucas_Camara

Boa tarde mano, então acabei de ler este tuto que vc mandou, e agora vou tentar reproduzi-lo, mas pelo que vejo aqui ele está um pouco defasado, ja que o iReport é bem diferente do JasperStudio, mas acho que da pra ter uma noção ao menos…vou tentar aqui…vlw!!!

veja como é diferente…rs…mas da pra ter uma noção boa…mas está dando este erro:

O único problema que vejo é vc conseguir obter o valor total por produto usando a consulta dentro do relatório. Esse tipo de coisa, fica mais fácil se vc recuperar os valores na aplicação e mandar para o relatório por parâmetro.

1 curtida

entendi, mas isso podemos fazer…a forma como isso vai para no relatorio é o “menos importante”…o importante é o relatorio mostrar a representatividade (%) correspondente de cada produto

Qdo os valores forem configurados no gráfico, talvez essa parte do percentual já seja feita de forma automática.

1 curtida

então antes de tudo o correto é passar o valor como parâmetro, na app?

Ficaria mais fácil. Vc poderia mandar um mapa mais ou menos assim:

Map<Long, Double> valorTotalProdutos = new HashMap<>();
valorTotalProdutos.put(1, 100.00); // Produto de ID 1
valorTotalProdutos.put(2, 200.00); // Produto de ID 2
valorTotalProdutos.put(3, 300.00); // Produto de ID 3

E mandaria essa mapa como parâmetro:

parametrosRelatorio.put("valorTotalProdutos", valorTotalProdutos);

E dentro do relatório, vc deve conseguir usar esses valores no grafico, mas confesso que não sei exatamente como isso seria feito. Só sei que tem como fazer hehehe.

1 curtida

vou pesquisar pra ver se encontro algo…

É assim mesmo. Dentro do relatório os parâmetros são acessados (se eu não me engano) usando $P{nomeParametro}, mas antes tem que declarar dentro do relatório que esse parâmetro chegará e o tipo apropriado.

1 curtida

@davidbuzatto e @Lucas_Camara

Bom dia!!

Desculpe a demora em responder, tomei a vacina do Covid, tive reação e fiquei de molho 4 dias…

agora estou pesquisando como criar uma variável para calcular a porcentagem, desta forma, não preciso alterar ou adicionar código ao sistema. Assim que conseguir, posto como fiz

1 curtida

@Lucas_Camara e @davidbuzatto

Alguma dica a mais que possam me dar?

Não estou conseguindo exibir a porcentagem, falta apenas este dado para o relatório ficar pronto, pensei em criar uma variável no próprio Jasper onde ele pegue a variável que armazena o valor total de cada venda e faça a divisão pela variável que armazena o valor total do relatório, gerando assim a porcentagem…mas não estou conseguindo fazer

Minha ideia de forma mais clara:

O que acham da ideia? E como fazer com que ela de certo?

O jeito mais fácil que vejo é montar todos os dados na aplicação é passar para o relatório. Vai deixar tudo mais simples de fazer e alterar desse jeito.

Agora usando a consulta dentro do relatório, até onde sei, vc terá que fazer com que a consulta retorne os valores necessários para que vc consiga fazer os cálculos usando as expressões dentro do jasper. Assim, vc teria que fazer o cálculo do percentual e alterar os labels do gráfico para usar essa expressão para mostrar o valor.