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 …
Gráfico Line no Ireport
2 Respostas
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());
}
}
[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
:
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]