Gerar gráfico com o JasperReport - mudar a cor da pizza

Galera,

muita gente vai perguntar o porque da minha dúvida, ja que é uma coisa tão irrelevante que eu nem deveria ligar, mas cliente quer a gente tem q fazer neh.

É o seguinte. Tenho um sistema web que tem toda uma parte de geração de relatórios. Nos relatórios apresento alguns gráficos de pizza, gerados pelo Jasper Report (na verdade pelo JFreeChart se não me engano, mas que vem com o JasperReports). Até ai tudo certo.

Quando a pizza tem uma seção, fica vermelha. A segunda fica azul. A terceira fica verde. E adivinha. O responsável no cliente não gosta de verde e ta na minha alma para mudar a cor dessa seção da pizza. Dei uma olhada na documentação mas não encontrei nenhum meio de fazer isso. Se alguém puder me dar uma luz quanto a isso eu agradeço, me pouparia algumas horas de reclamação por dia só porque a droga da seção ta verde.

Outra reclamação é que estão dizendo que a imagem do gráfico fica meio embaçada. Alguém também ja passou por isso ou conhece uma solução?

Desde já agradeço a colaboração de todos.

Abraços

Ninguém nunca fez isso?

Ninguém sabe nem me responder se isso é mesmo impossível?

Paulo,

Geralmente quando eu crio relatórios eu utilizo a ferramenta iReport. Lá tem como você selecionar as cores que aparecerão no gráfico, porém eu só testei a nível de relatório utilizando gráfico em barras, nunca em relatórios com gráfico pizza. Mas vale a dica. Tenta e reporte para nós o resultado.

Abraço.

bland,

Faz dias que tento encontrar um tutorial para gerar gráficos diretamente no iReport, mas não encontrei. :frowning:
Você poderia descrever os passos necessários para que eu possa criar um gráfico em barras?

Se você está gerando o grafico fora do ireport de uma olhada no metodo setSectionOutlinePaint do objeto plot.

marcosbrandao,

Desejo gerar o grafico dentro do iReport.

Preciso que uma cor de uma barra em um gráfico fique amarela dependendo do valor atingido no eixo Y.

Se trata de apenas uma série mesmo, não haverá mais de uma série no gráfico.

Alguém sabe dizer se tem como fazer isso no iReport usando as opções já dadas por default nele, ou se seria preciso implementar uma classe customizadora para o gráfico (cores da série do gráfico)?

Posso até estar errado, mas acho que só via aplicação. Sou ainda um pouco inesperiente no IReport e no Java, mas eu acordo e durmo pensando em IReport… tentei fazer a mesma coisa pelo IReport, mas não consegui.

[quote=paulohrl]Galera,

muita gente vai perguntar o porque da minha dúvida, ja que é uma coisa tão irrelevante que eu nem deveria ligar, mas cliente quer a gente tem q fazer neh.

É o seguinte. Tenho um sistema web que tem toda uma parte de geração de relatórios. Nos relatórios apresento alguns gráficos de pizza, gerados pelo Jasper Report (na verdade pelo JFreeChart se não me engano, mas que vem com o JasperReports). Até ai tudo certo.

Quando a pizza tem uma seção, fica vermelha. A segunda fica azul. A terceira fica verde. E adivinha. O responsável no cliente não gosta de verde e ta na minha alma para mudar a cor dessa seção da pizza. Dei uma olhada na documentação mas não encontrei nenhum meio de fazer isso. Se alguém puder me dar uma luz quanto a isso eu agradeço, me pouparia algumas horas de reclamação por dia só porque a droga da seção ta verde.

Outra reclamação é que estão dizendo que a imagem do gráfico fica meio embaçada. Alguém também ja passou por isso ou conhece uma solução?

Desde já agradeço a colaboração de todos.

Agora eu vejo… meu cliente perto do seu é uma mãe. Pelo que eu usei e conheço dos gráficos só via aplicação.
Acho o IReport interessante e uma ferramenta que tem tudo pra dar muito certo, basta a galera que “escova bit” fazer essas implementações pra ele como plugin

Abraços[/quote]

até hoje não sei como se faria isso, e não sei usar classe customizadora.

falam muito dessa tal classe customizadora, mas nao sei nem onde ficaria o .class ou sei lá o quê pra pelo menos ela ser encontrada. codificar a classe, ai é que nao sei mesmo.

tentaram dar uma idéia de colocar dois gráficos, uma em cima do outro, e dependendo do valor ou flag criada exibiria um ou outro, sendo a diferença a cor das barras…

acho que até daria certo, mas nao quis fazer e tambem o assunto morreu por aqui

clica no grafico

va em PROPRIEDADES > SERIES COLORS > Selecione as cores do grafico

Isto é uma classe customizadora:



public class SimplePieChartCustomizer  implements JRChartCustomizer{
	public void customize(JFreeChart jFreeChart, JRChart jrChart)
	{
       Font minhaFonte = new Font("Arial Narrow", Font.PLAIN, 8);
	PiePlot piePlot = (PiePlot) jFreeChart.getPlot();
	piePlot.setLabelBackgroundPaint(new Color ( 192 , 192 , 192 ));
	piePlot.setLabelFont(minhaFonte); 	
	piePlot.setLabelGap(0.00); 
	piePlot.setLabelLinkMargin(0.01);	
	piePlot.setInteriorGap(0.00);
	piePlot.setMaximumLabelWidth(0.20);	

	}

Pra rodar seu grafico no Ireport usando a classe customizadora ,sera necessario gerar um jar contendo esta classe e coloca lo no classPath do ireport,va em opções–>classPath–> adicionar Jar e adicione o jar gerado ,ja no seu grafico clique com o botao direito nelee vá na propriedade classe do customizador e coloque o caminho completo da sua classe customizadora ex:
br.com.example.reports.custom.charts.SimplePieChartCustomizer.

PiePlot piePlot = (PiePlot) jFreeChart.getPlot();

com este cara acima vc consegue fazer varias customizacoes nos graficos.

Qualquer duvida é so postar.
t+

Bom Dia Galera,

To com um problemao na emissão de gráficos com ireport 3.7.5 + jasperreport + eclipse (Java)

ocnstrui o gráfico no ireport, com a query tudo direitinho, ao visualizar o preview, funciona perfeitamente, porém ao tentar CHAMAR esse meu gráfico de uma servlet, ocorre o seguinte erro:

java.lang.ClassNotFoundException: org.exolab.castor.xml.ValidationException
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1484)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1329)
at net.sf.jasperreports.chartthemes.simple.XmlChartThemeExtensionsRegistryFactory.createRegistry(XmlChartThemeExtensionsRegistryFactory.java:75)
at net.sf.jasperreports.extensions.DefaultExtensionsRegistry.instantiateRegistry(DefaultExtensionsRegistry.java:238)
at net.sf.jasperreports.extensions.DefaultExtensionsRegistry.loadRegistries(DefaultExtensionsRegistry.java:213)
at net.sf.jasperreports.extensions.DefaultExtensionsRegistry.loadRegistries(DefaultExtensionsRegistry.java:162)
at net.sf.jasperreports.extensions.DefaultExtensionsRegistry.getRegistries(DefaultExtensionsRegistry.java:132)
at net.sf.jasperreports.extensions.DefaultExtensionsRegistry.getExtensions(DefaultExtensionsRegistry.java:104)
at net.sf.jasperreports.engine.util.JRStyledTextParser.(JRStyledTextParser.java:76)
at net.sf.jasperreports.engine.fill.JRBaseFiller.(JRBaseFiller.java:182)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.(JRVerticalFiller.java:77)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.(JRVerticalFiller.java:87)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.(JRVerticalFiller.java:57)
at net.sf.jasperreports.engine.fill.JRFiller.createFiller(JRFiller.java:142)
at net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:52)
at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:417)
at net.sf.jasperreports.engine.JasperRunManager.runReportToPdf(JasperRunManager.java:281)
at action.relatorios.EstoqueAtual.geraGraficoMaiorSaida(EstoqueAtual.java:201)
at action.relatorios.EstoqueAtual.doPost(EstoqueAtual.java:58)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:852)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Unknown Source)

Será se alguem saberia oq poderia ser??
to precisando muito disso, preciso entregar o meu tcc nesse mes de novembro.

Muito Obrigado.