Java 有没有一种方法可以使用jfreechart快速绘制成千上万的数据?
我正在尝试使用JavaSWT制作GUI程序 但是,我有问题 我在绘制图表时使用jfreechart。问题是,从10000到20000条数据需要在解析后绘制图表,绘制数据需要花费太多时间 目前正在开发中,仅显示部分数据时会出现延迟。我该怎么办?或者我应该使用不同于jfreechart的库 这就是我使用它的方式Java 有没有一种方法可以使用jfreechart快速绘制成千上万的数据?,java,user-interface,charts,swt,jfreechart,Java,User Interface,Charts,Swt,Jfreechart,我正在尝试使用JavaSWT制作GUI程序 但是,我有问题 我在绘制图表时使用jfreechart。问题是,从10000到20000条数据需要在解析后绘制图表,绘制数据需要花费太多时间 目前正在开发中,仅显示部分数据时会出现延迟。我该怎么办?或者我应该使用不同于jfreechart的库 这就是我使用它的方式 private JFreeChart createChart(XYDataset dataset){ //create chart JFreeChart chart = ChartF
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();
}
});
private JFreeChart createChart(XYDataset数据集){//创建图表
JFreeChart chart=ChartFactory.createXYLineChart(
“,”km“,”db“,”数据集,
PlotOrientation.VERTICAL,true,true,false);
XYPlot=chart.getXYPlot();
XylineandShaperEnder渲染器=新的XylineandShaperEnder(真、假);
渲染器.setSeriesPaint(0,颜色.红色);
int seriescont=plot.getseriescont();
对于(int i=0;i 对于(int i=0;ITRY <代码> FastScatterPlot < /代码>,讨论了,但也考虑了用户的体验。这绝对快了。但是我希望在放大时画出这行。你应该怎么做?更多的想法。