0

@ Oliver Watkins. Here is the code: The first method is to get data from the file while second to get from the live. the last one is about plot after some processing. Consider ee[] and y[] as the data arrays.

     private byte[] FileR(String filename) {
                byte[] data = null;
                 AudioInputStream ais ;

try {
                 File fileIn = new File(filename);  
                 if (fileIn.exists()) {
                     ais = AudioSystem.getAudioInputStream(fileIn);
                     data = new byte[ais.available()];
                     ais.read(data);
                 }
             }catch (UnsupportedAudioFileException | IOException e) {
                 System.out.println(e.getMessage());
                 throw new RuntimeException("Could not read " + filename);
             }
             return data;
         }
         private byte[] Capture(double t) throws LineUnavailableException {
             AudioFormat format = new AudioFormat(48000,16,2,true,false);
             DataLine.Info info = new DataLine.Info(TargetDataLine.class, format);
             line = (TargetDataLine) AudioSystem.getLine(info);
             line.open(format);
             line.open();
             int size=(int) (line.getBufferSize()*t);
             byte[] b = new byte[size];
             line.start();
             line.read(b, 0, size);
             return b;
         }                                                                                               private void plot(double[] ee, double[] y)  {
             XYSeries see = new XYSeries("Filtered");
             for(int i=0;i<ee.length;i++){
                 see.add(i,ee[i]);
             }
            XYSeriesCollection cee=new XYSeriesCollection();
            cee.addSeries(see);
            XYItemRenderer ree= new StandardXYItemRenderer();
            NumberAxis rangeAxisee = new NumberAxis("Filtered");
            XYPlot subplot1 = new XYPlot(cee, null, rangeAxisee, ree);
            subplot1.setRangeAxisLocation(AxisLocation.BOTTOM_OR_LEFT);
            XYSeries sy = new XYSeries("Noisy");
             for(int i=0;i<y.length;i++){
                 sy.add(i,y[i]);
             }
            XYSeriesCollection cy=new XYSeriesCollection();
            cy.addSeries(sy);
            XYItemRenderer ry= new StandardXYItemRenderer();
            NumberAxis rangeAxisy = new NumberAxis("Noisy");
            XYPlot subplot2 = new XYPlot(cy, null, rangeAxisy, ry);
            subplot2.setRangeAxisLocation(AxisLocation.BOTTOM_OR_LEFT);
            CombinedDomainXYPlot plot = new CombinedDomainXYPlot(new NumberAxis("Domain"));
            plot.setGap(10.0);
            plot.add(subplot1);
            plot.add(subplot2);
            plot.setOrientation(PlotOrientation.VERTICAL);
            JFreeChart chart = new JFreeChart("Adaptive Filter",
                                  JFreeChart.DEFAULT_TITLE_FONT, plot, true);
            panel = new ChartPanel(chart, true, true, true, false, true);
            JFrame frame= new JFrame();       
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setSize(750,500);
            frame.add(panel,BorderLayout.CENTER);
            frame.setVisible(true);        
         }
  • i dont think i understand the question entirely, could you provide me some more information. I think what you are trying to do is get some historical day plot that, and also plot the "live" real time data? – Andy B Jul 10 '13 at 19:43
  • Please edit your original question, [Dynamic Chart using JFreeChart](http://stackoverflow.com/questions/17528820/dynamic-chart-using-jfreechart), to include an [sscce](http://sscce.org/). – trashgod Jul 11 '13 at 00:05

0 Answers0