Author Topic: como incrementar Zoom en una grafica JFreeChart al exportarla a imagen?  (Read 1683 times)

haw01

  • Jr. Member
  • **
  • Posts: 82
  • Karma: 0
    • View Profile
Buenos Dias Hermano ,

necesito tu ayuda,tengo un problema estoy exportando unas Graficas recien cargadas a un JPanel,se supone que al exportarlas,se exportan tal cual a una imagen,pero la imagen no sale,como la exporto,si la genera bien,pero al exportarla no me la crea con el zoom adecuado,

este es mi codigo ,

Code: [Select]
public JFreeChart crearGraficasDGP(XYDataset Seriesdata) {
JFreeChart chart = ChartFactory.createXYLineChart(
null, // chart title
null, // x axis label
null, // y axis label
Seriesdata, // data
PlotOrientation.VERTICAL,
true, // include legend
true, // tooltips
false // urls
);
chart.setBackgroundPaint(Color.white);

XYPlot plot = (XYPlot) chart.getPlot();

plot.setDomainGridlinePaint(Color.darkGray);
plot.setRangeGridlinePaint(Color.darkGray);

plot.setBackgroundPaint(new GradientPaint(0, 0, Color.white, 200,200, Color.lightGray, false));
    plot.setBackgroundAlpha(0.5f);
   
    plot.setDomainPannable(true);
        plot.setRangePannable(true);
       
        plot.setDomainCrosshairVisible(true);
        plot.setRangeCrosshairVisible(true);
       
        plot.setAxisOffset(new RectangleInsets(1,1,1,1));
       
        plot.setRangeGridlinesVisible(true);
    plot.setDomainGridlinesVisible(true);
   
    plot.setOutlinePaint(Color.black);
    plot.setOutlineStroke(new BasicStroke(1.0f));
   
    StandardXYToolTipGenerator ttg = new StandardXYToolTipGenerator();
    ttg.getXFormat().setMinimumFractionDigits(6);
    ttg.getYFormat().setMinimumFractionDigits(6);
   
    NumberAxis domainAxis = new NumberAxis(null);
    ValueAxis rangeAxis = new NumberAxis(null);       
   
    domainAxis.setVerticalTickLabels(true);
    domainAxis.setAutoRange(true);
    rangeAxis.getRightArrow();
   
    rangeAxis.setVisible(true);
    rangeAxis.setAutoRange(true);
   
    plot.setDomainAxis(domainAxis);
    plot.setRangeAxis(rangeAxis);
   
    plot.setRangeAxisLocation(AxisLocation.BOTTOM_OR_RIGHT);
    XYLineAndShapeRenderer renderer
= (XYLineAndShapeRenderer) plot.getRenderer();


        renderer.getBaseToolTipGenerator();
       
       
        BasicStroke basicStroke = new BasicStroke(1.5F);
        BasicStroke basicStr = new BasicStroke(3.5F);
        // TODO:
        //Esta parte de codigo se tiene que AFECTAR
        renderer.setSeriesStroke(0, basicStroke);     
        renderer.setSeriesPaint(0, Color.blue);
        renderer.setSeriesShape(0, new Ellipse2D.Double(-1.0, -1.0, 2.0, 2.0));
        renderer.setSeriesShapesVisible(0, true);
        renderer.setSeriesToolTipGenerator(0, ttg);
       
       
        renderer.setSeriesStroke(1, basicStr);     
        renderer.setSeriesPaint(1, Color.red);
        renderer.setSeriesShape(1, new Ellipse2D.Double(-2.0, -2.0, 4.5, 4.5));
        renderer.setSeriesShapesVisible(1, true);
        renderer.setSeriesLinesVisible(1, false);
        renderer.setSeriesToolTipGenerator(1, ttg);
       
        renderer.setSeriesStroke(2, basicStr);     
        renderer.setSeriesPaint(2, Color.orange);
        renderer.setSeriesShape(2, new Ellipse2D.Double(-4.0, -4.0, 7.0, 7.0));
        renderer.setSeriesShapesVisible(2, true);
        renderer.setSeriesToolTipGenerator(2, ttg);
       
        renderer.setSeriesStroke(3, basicStr);     
        renderer.setSeriesPaint(3, Color.cyan);
        renderer.setSeriesShape(3, new Ellipse2D.Double(-4.0, -4.0, 7.0, 7.0));
        renderer.setSeriesShapesVisible(3, true);
        renderer.setSeriesToolTipGenerator(3, ttg);
       
        renderer.setSeriesStroke(4, basicStr);     
        renderer.setSeriesPaint(4, Color.gray);
        renderer.setSeriesShape(4, new Ellipse2D.Double(-4.0, -4.0, 7.0, 7.0));
        renderer.setSeriesShapesVisible(4, true);
        renderer.setSeriesToolTipGenerator(4, ttg);
       
        renderer.setSeriesStroke(5, basicStr);     
        renderer.setSeriesPaint(5, Color.green);
        renderer.setSeriesShape(5, new Ellipse2D.Double(-4.0, -4.0, 7.0, 7.0));
        renderer.setSeriesShapesVisible(5, true);
        renderer.setSeriesToolTipGenerator(5, ttg);
       
        plot.setRenderer(renderer);
        RenderingHints renderingHints =
            new  RenderingHints(RenderingHints.KEY_ANTIALIASING,
                                RenderingHints.VALUE_ANTIALIAS_ON); 
    renderingHints.put(RenderingHints.KEY_STROKE_CONTROL,
                       RenderingHints.VALUE_STROKE_PURE);
    chart.setRenderingHints(renderingHints);
 
    return chart;
}



y este es mi codigo para la exportacion

Code: [Select]
//Crear Grafica DGP
Seriesdata = graphs.obtenerGraficaSeries(fechaInsumo, siefore, escenarios,xi,beta,estres);
JFreeChart chartDGP =graphs.crearGraficasDGP(Seriesdata);
try {
ChartUtilities.saveChartAsJPEG(new File(rutaReporte+"DGP"+".jpg"), chartDGP, 1150, 270);
} catch (IOException e) {
System.err.println("Error creando grafico.");
}



no me deja subir una imagen,para que te mueste el ejemplo,pero el punto es que laa grafica tiene forma cuando la genera pero cuando la exporta a imagen solo me crea una linea vertical,y eso no es correcto,tiene que tener como arco e ir creciendo,pero solo la pone una linea vertical,como puedo generar zoom para que me la exporte con zoom y se vea la forma de la grafica?

espero me puedas ayudar hermano ,

Saludos!!

 

ey