Gráfico Line no Ireport

2 respostas
A

Alguem sabe como posso colocar mais de uma linha no grafico " line" … pois tenho que mostrar duas linhas (meta e limite) , mas soh estou conseguindo colocar uma linha …

2 Respostas

O

Ups, sinto lhe informar … Mas receio que você terá que (assim como eu) fazer o gráfico na mão !!

O ireport ainda não da suporte para várias series no mesmo gráfico, tive esse mesmo problema entrei no fórum do ireport lá no SourceFourge e olha o que foi respondido pelo próprio Giulio Toffoli …

http://sourceforge.net/forum/message.php?msg_id=2821021

Eu fiz mu gráfico da seguinte maneira: (ainda não testei, mas a idéia é criar as várias séries na mão, gerar o gráfico e passar uma imagem como parametro para o ireport)

p.s.: Estou usando o getYear() que ta deprecated, se tiver uma sugestão aceito … t+

private static DefaultCategoryDataset dados;
	private static BufferedImage image;

	public GeraGrafico(HashMap _hashValues)
	{

	}
	
	public static Image geraLineChart(String titulo, String nomeX, String nomeY, 
	String sql, String[] series,String agrupamento){
		try
		{
			ResultSet rs = carregarSql(sql);
			geraCategoryDataSet(rs,series,agrupamento);
		
			JFreeChart fChart = ChartFactory.createLineChart
			(titulo,nomeX,nomeY,dados,PlotOrientation.VERTICAL,true,true,false);
			geraImagem(fChart);
		}
		catch(KscException ke) 
		{
			System.err.print(ke.getMessage());
		}
		catch(SQLException ke) 
		{
			System.err.print(ke.getMessage());
		}
		return image;		
	}
		
	protected static void geraImagem(JFreeChart chart)
	{
		chart.setBackgroundPaint(Color.WHITE);
        image = chart.createBufferedImage(500, 300);
	}

	protected static void geraCategoryDataSet(ResultSet rs, String[] series, String agrupamento)
	{
		try
		{
			while(rs.next())
			{
				int ano = ((new Date().getYear())+1900) - 4; 
				// Definindo o ano inicial para exibição no report
				
				String valor_agrupamento = rs.getString(agrupamento);
				// Pegando o valor do campo que esta sendo usado como agrupamento
				// É necessario deixar esta coluna antes das colunas de dados
			
				for(int i=0; i< series.length; i++)
				{
					dados.setValue(rs.getDouble(series[i]), String.valueOf(ano), valor_agrupamento);
					ano++;
				}
			}
		}

		catch(SQLException ke) 
		{
			System.err.print(ke.getMessage());
		}
	}
Elida_Calheira

[color=red][i]Bem, eu simplesmente coloco o mesmo valor na “Expressão da Categoria” - eixo x, e ele acab gerando quantas linhas eu quiser…

Agora tb tenho uma dúvida :wink: :
Tenho 17 valores no meu relatório e quero jogá-los no meu grafico e.[/i]…Não consigo!

Alguem pode me dar um help?

:D[/color]

Criado 21 de março de 2005
Ultima resposta 17 de ago. de 2008
Respostas 2
Participantes 3