gpt4 book ai didi

java - JFreeChart图表渲染问题

转载 作者:行者123 更新时间:2023-11-30 04:59:42 24 4
gpt4 key购买 nike

这个问题是我上一个问题的延续,与 non-displaying of data 相关。 。在给出建议后,我尝试绘制较小的数据范围。据观察,当我处理不同大小的数据范围时,渲染时间迅速增加。最后一个(或多或少)可接受的数据集(正在加载到内存但不用于绘图)包含 16k 个值。如果我只需要绘制 100 个,渲染时间也会很长。

绘图生成代码如下:

public void plotXYChart(double dArray[][], String sPlotName, String sSeriesName,
String sRangeName, int iInitialPoint, int iPlotLength){

XYSeries series1 = new XYSeries(sSeriesName);
series1.clear();
series1.setNotify(false);

if (iInitialPoint+iPlotLength > dArray.length){
iPlotLength = dArray.length;
} else {
iPlotLength+=iInitialPoint;
}
for (int i=iInitialPoint; i < iPlotLength; i++){
series1.add(dArray[i][0], dArray[i][1], false);
}

System.out.println("Elements in series: " + series1.getItemCount());

XYSeriesCollection dataset = new XYSeriesCollection();
dataset.removeAllSeries();
dataset.addSeries(series1);
System.out.println("Elements in dataset: " + dataset.getItemCount(0));

chart = null;
chart = new JFreeChart(new XYPlot(dataset, new NumberAxis(sSeriesName),
new NumberAxis(sRangeName), new SamplingXYLineRenderer()));

plotChart(sPlotName, chart);

XYPlot plot = (XYPlot) chart.getPlot();
plot.getDomainAxis().setStandardTickUnits(new StandardTickUnitSource());
plot.getRangeAxis().setStandardTickUnits(new StandardTickUnitSource());

}

用于图表输出的 JFramePanel 代码是下一个:

    private void plotChart(String sPlotName, JFreeChart chart){

if (this.cPanel!=null) {
cPanel.setChart(chart);
}
else
cPanel = new ChartPanel(chart, true);


this.chartFrame.add(cPanel);
if (this.chartFrame.isVisible() == false){
RefineryUtilities.centerFrameOnScreen(this.chartFrame);
}
this.chartFrame.pack();
this.chartFrame.setVisible(true);
}

我想询问有关渲染时间的改进,因为现在我一直遇到这个问题。

最佳答案

首先解开模型和 View ,然后您可以将数据的可管理部分分页到 View 中,如建议的 here .

或者,您可以查看 SlidingXYDataset,讨论过 here .

关于java - JFreeChart图表渲染问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7269291/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com