jFreeChart com gráficos em GIF?

Meu firewall bloqueia arquivos com extensão PNG e os gráficos gerados no jFreeChart em formato JPEG não ficam bom.

É possível gerar gráficos em GIF no jFreeChart?

:?: :?: :?: :?: :?:

cara, muda o firewall. Estamos em 2009! png é muito melhor :wink:

amigão estou precisando gerar gráficos em meu aplicativo…

será que poderia me passar um exemplo que você tem do jFreeChart?

não consegui achar nenhum fonte deles…

[quote=rafaels]amigão estou precisando gerar gráficos em meu aplicativo…

será que poderia me passar um exemplo que você tem do jFreeChart?

não consegui achar nenhum fonte deles…[/quote]

Tá na mão. Segue abaixo o código e a forma da chamada.

Chamada:

graphicWorkDay.createGraphic(response.getOutputStream());
Código:

[code]
import java.awt.Color;
import java.awt.Font;
import java.io.OutputStream;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.AxisLocation;
import org.jfree.chart.axis.CategoryAxis;
import org.jfree.chart.axis.CategoryLabelPositions;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.DatasetRenderingOrder;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.renderer.category.BarRenderer3D;
import org.jfree.chart.renderer.category.CategoryItemRenderer;
import org.jfree.chart.title.TextTitle;
import org.jfree.data.category.DefaultCategoryDataset;

public class GraphicWorkDay {

private DefaultCategoryDataset bars = null;
private String desBar1;
private String desBar2;

private void createDataset() {

try {
  bars = new DefaultCategoryDataset();

  desBar1  = "Barra 1";
  desBar2  = "Barra 2";
  
  bars.addValue(5000,  desBar1, "Jan-2009");
  bars.addValue(7000,  desBar2, "Jan-2009");
      
  bars.addValue(10000, desBar1, "Fev-2009");
  bars.addValue(12000, desBar2, "Fev-2009");
      
  bars.addValue(9000,  desBar1, "Mar-2009");
  bars.addValue(8000,  desBar2, "Mar-2009");
      
  bars.addValue(12000, desBar1, "Abr-2009");
  bars.addValue(7000,  desBar2, "Abr-2009");
      
  bars.addValue(7000,  desBar1, "Mai-2009");
  bars.addValue(12000, desBar2, "Mai-2009");
      
}
catch(Exception e) {
  e.printStackTrace();
}

}

public void createGraphic(OutputStream os) {
this.createDataset();

/**
 * Inicia o gráfico
 **/
 
JFreeChart chart = ChartFactory.createBarChart3D("Título", 
                                                 "Rodapé",     
                                                 "Título Barra",     
                                                 this.getBars(), 
                                                 PlotOrientation.VERTICAL, 
                                                 true, 
                                                 false, 
                                                 false);
  chart.setBackgroundPaint(Color.white);
  chart.addSubtitle( new TextTitle( "Subtítulo", new Font( null, Font.PLAIN, 14 ) ) );  
  
/**
 * Invoca o objeto com propriedades de plotagem do gráfico
 */
CategoryPlot categoryplot = chart.getCategoryPlot();
  // Define a cor do fundo gráfico    
  categoryplot.setBackgroundPaint(new Color(215, 235, 255));
  // Define a posição da legenda do eixo "X"
  categoryplot.setDomainAxisLocation(AxisLocation.BOTTOM_OR_RIGHT);
  // Define a visibilidade das linhas de Grid
  categoryplot.setRangeGridlinesVisible(true);

/**
 *  Invoca objeto de plotagem do gráfico que: 
 *  Controla as informações e posicionamento do eixo "X"
 */
CategoryAxis categoryaxis = categoryplot.getDomainAxis();
  // Define a orientação e o ângulo de impressão dos labels do eixo
  categoryaxis.setCategoryLabelPositions(CategoryLabelPositions.UP_45);
/**
 *  Invoca objeto de plotagem do gráfico que:
 *  Controla a renderizaçao dos itens do gráfico.
 *  No caso "Bars"
 */
CategoryItemRenderer categoryitemrenderer = categoryplot.getRenderer();
  // Define a cor do primeiro item "0". A alteraçao reflete na legenda
  categoryitemrenderer.setSeriesPaint(0, Color.cyan); //
  // Define a cor do segundo item "1". A alteraçao reflete na legenda
  categoryitemrenderer.setSeriesPaint(1, new Color(13, 255, 13));

/**
 *  Invoca objeto do controle de renderização que:
 *  Controla o efeito 3D das bars
 */
BarRenderer3D br = (BarRenderer3D) categoryitemrenderer;
  // "0" define a barra completa, com os todos os lados do polígono
  br.setItemMargin(0);

// Defina a posição das linhas no gráfico em relação as barras
categoryplot.setDatasetRenderingOrder(DatasetRenderingOrder.FORWARD);

try {
   ChartUtilities.writeChartAsPNG(os, chart, 740, 270);
} 
catch (java.io.IOException exc) {
  System.err.println("Error creating image!");
}

}

public DefaultCategoryDataset getBars() {
return bars;
}

public void setBars(DefaultCategoryDataset newBars) {
bars = newBars;
}

}[/code]