Java wykresy

0

Witam
Mam pytanie. Chciałabym zrobić funkcje która zwróci mi JPanel z wykresem.

Mam tak to zrobione. Ale jest to źle jak to zrobić poprawnie?

Kod w załączniku. Będę bardzo wdzięczna za odpowiedź.
pozdrawiam

0
package model;

import java.awt.Color;
import java.awt.GradientPaint;
import java.awt.Rectangle;
import java.awt.Shape;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.util.ArrayList;

import javax.swing.JPanel;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.LegendItem;
import org.jfree.chart.LegendItemCollection;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.axis.ValueAxis;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PiePlot3D;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.renderer.category.BarRenderer;
import org.jfree.chart.renderer.xy.XYItemRenderer;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.data.general.DefaultPieDataset;
import org.jfree.data.general.PieDataset;
import org.jfree.data.xy.XYDataset;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;
import org.jfree.util.Rotation;

public class PlotFile {
	 ArrayList<Double> time = new ArrayList<Double> ();
	 ArrayList<Double> value = new ArrayList<Double> (); 
	 
	 public void readFile (File file) {
	  time.clear();
	  value.clear();
	  BufferedReader br = null;
	  try {
	   br = new BufferedReader (new FileReader(file));
	   while (true) {
	    String line = br.readLine();
	    if (line == null) break;
	    String [] values = line.split(",");
	    time.add(Double.parseDouble(values[0].trim()));
	    value.add(Double.parseDouble(values[1].trim()));
	   }
	  }
	  catch (Exception e){
	   e.printStackTrace(); //lub komunikat o bledzie
	  }
	 }
	 public JPanel getChart()
	 {
		 final XYDataset dataset = createDataset();
	        final JFreeChart chart = createChart(dataset);
	        final ChartPanel chartPanel = new ChartPanel(chart);
	        chartPanel.setPreferredSize(new java.awt.Dimension(800, 500));
	        

	    }
	    
	   
	    private XYDataset createDataset() {
	        
	        final XYSeries series = new XYSeries("Pomiar");
	     

	        final XYSeriesCollection dataset = new XYSeriesCollection();
	      
	          dataset.addSeries(series);
	        return dataset;
	        
	    }
	    
	    /**
	     * Creates a chart.
	     * 
	     * @param dataset  the data for the chart.
	     * 
	     * @return a chart.
	     */
	    private JFreeChart createChart(final XYDataset dataset) {
	        
	        // create the chart...
	        final JFreeChart chart = ChartFactory.createXYLineChart(
	            "Pomiar pojemności płuc",      // chart title
	            "X- Objętość[l] ",                      // x axis label
	            "Y-Przepływ [l/s]",                      // y axis label
	            dataset,                  // data
	            PlotOrientation.VERTICAL,
	            true,                     // include legend
	            true,                     // tooltips
	            false                     // urls
	        );

	        // NOW DO SOME OPTIONAL CUSTOMISATION OF THE CHART...
	        final XYPlot plot = chart.getXYPlot();
	        
	        plot.setBackgroundPaint(new Color(0xffffe0));
	        plot.setDomainGridlinesVisible(true);
	        plot.setDomainGridlinePaint(Color.lightGray);
	        plot.setRangeGridlinesVisible(true);
	        plot.setRangeGridlinePaint(Color.lightGray);
	                
	        ValueAxis xaxis = plot.getRangeAxis();
	        xaxis.setRange(0.0,8.0);
	       
	        ValueAxis yaxis = plot.getRangeAxis();
	        yaxis.setRange(0.0, 8.0);
	      
	  
	        return chart;
	        
	    }
	 }
 Może tak bedzie szybciej

"pokolorowałem" - bogdans

1 użytkowników online, w tym zalogowanych: 0, gości: 1