JFreeChart多个系列问题

时间:2016-10-03 23:02:12

标签: java naming-conventions jfreechart

晚上好:

我正在收集有关要使用以下两种方法绘制的功能评估数量的数据。对于给定的n和m,第一个运行Romberg积分,n <= m。在该方法中,在每次评估期间递增全局计数器,并且我想要绘制给定R(n,m)的评估的数量。第二个接收数据集并绘制图形。

public static XYSeriesCollection functionDataCollecter(){
    counter = 0;

    //a single line on a chart
    XYSeries series; 

    //a collection of series
    XYSeriesCollection dataset = new XYSeriesCollection(); 

    for(int i=0;i<3;i++){
        //initiate new series
        series = new XYSeries("data");
        for(int k = i; k<9;k++){
            R_nm(k,i,0,(Math.PI)/2);
            series.add(k, counter);
        }
        //add series to dataset
        dataset.addSeries(series);   
    }

    return dataset;
}

public static void seriesPlotter(XYSeriesCollection dataset) {

    XYPlot myPlot = new XYPlot("m=2", "Math 521", "m<=n<9", "log_10(F(n,m))", dataset);
    myPlot.pack();
    myPlot.setVisible(true);

}

我遇到了问题。似乎我必须唯一地命名数据集中的每个系列。我收到错误:&#34;此数据集已包含org.jfree.data.xy.XYSeriesCollection.addSeries(XYSeriesCollection.java:159)中的关键数据系列

我似乎无法找到一种简单的方法来追加或增加我的系列变量名称。数组混淆了我的垃圾,它们是我在网上搜索中发现的唯一选择。

我很欣赏简单的建议,因为我不是程序员,只是学习了类和对象之间的区别。如果您愿意帮助我,我会这样说是为了帮助您构建您的建议。提前谢谢。

2 个答案:

答案 0 :(得分:1)

如图here所示,集合的addSeries()方法使用传入的XYSeries的名称作为键。只要名称是唯一的,您就可以将多个系列添加到集合中。在此example中,两个系列名为"Random""Added";当您单击添加按钮时,后一系列会动态更新。

image

随着您的计划的发展,

  • 您可以将图表更新为JSpinner更改中的值,如here所示。

image

  • 您可以使用工作线程设置计算进度的动画,如here所示。

image

答案 1 :(得分:1)

好的,我只是想出来了,这比我想象的要简单得多。错误消息并不是指对每个系列的唯一声明名称的某些要求。它指的是String参数:

series = new XYSeries("data");

只需更新循环中的参数,这足以获得三个多色图:

series = new XYSeries("data"+Integer.toString(i));

我希望这有助于某人前进!