0

I'm trying to make GUI program using java SWT.

But, I have problem.

I am using jfreechart when drawing a chart. The problem is that from 10,000 to up to 20,000 pieces of data need to be charted after parsing, it takes too much time to draw the data.

Currently in development, there is a delay in displaying only some data. What should I do? Or should I use a different library than jfreechart?

This is how I use it.

private JFreeChart createChart(XYDataset dataset){ //create chart
    JFreeChart chart = ChartFactory.createXYLineChart(
            "", "km", "db", dataset,
            PlotOrientation.VERTICAL, true, true, false);

    XYPlot plot = chart.getXYPlot();

    XYLineAndShapeRenderer renderer = new XYLineAndShapeRenderer(true, false);
    renderer.setSeriesPaint(0, Color.RED);

    int seriesCount = plot.getSeriesCount();
      for (int i = 0; i < seriesCount; i++) {
        plot.getRenderer().setSeriesStroke(i, new BasicStroke(1));
      }

    ...setting plots 

    chart.setTitle(new TextTitle("test", new Font("Serif", java.awt.Font.BOLD, 18)));
    //ChartUtilities.saveChartAsPNG(new File("line_chart.png"), chart, 1920, 1080);
    return chart;

}


private XYDataset createDataset(double[] x, double[] y) {// create dataset  
    XYSeries series = new XYSeries("A");

    for(int i = 0; i<x.length; i= i+5) {   // i+5 for developing
        series.add(x[i],y[i]);
    }

    XYSeriesCollection dataset = new XYSeriesCollection();
    dataset.addSeries(series);

    return dataset;

}

mntmOpen.addListener(SWT.Selection, new Listener() { // file open listener
        @Override
        public void handleEvent(Event e) {

            ...open file and parsing. and update values 

            chart = createChart(createDataset(xDataArray1,yDataArray1)); // over 10,000 point chart
            frame.setChart(chart); // setting chart 
            shell.open(); 
        }
    });
Kai Oh
  • 21
  • 2
  • Try `FastScatterPlot`, discussed [here](https://stackoverflow.com/search?tab=votes&q=%5bjfreechart%5d%20FastScatterPlot), but also consider the user's experience. – trashgod Nov 25 '19 at 09:03
  • It's definitely faster with this. But I want the line to be drawn when zoomed in. What should you do? – Kai Oh Nov 26 '19 at 07:42
  • More ideas [here](https://stackoverflow.com/a/11808468/230513). – trashgod Nov 26 '19 at 08:23

0 Answers0