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();
}
});