如何使用JFreeChart在折线图中绘制多条线?

时间:2015-03-27 19:51:32

标签: java jfreechart

我正在使用java,我想绘制一个同时包含至少两行的折线图。我每次只能传递一个DefaultCategoryDataset作为参数,而这个DefaultCategoryDataset代表一行。那我怎么能这样做呢?

ChartFactory.createLineChart("String", "String", "String", "DefaultCategoryDataset", "PlotOrientation.HORIZONTAL", "boolean", "boolean", "boolean");

1 个答案:

答案 0 :(得分:1)

您必须使用多个系列“提供”数据。

这是我用XYLineChart处理这个问题的方法:

1)我有一个私人对象

    private XYSeriesCollection data =null;

2)将其初始化为方法,然后调用“提供”数据的另一种方法。

    data = new XYSeriesCollection();

    fillXYSeries();

3)这是这个方法:

private void fillXYSeries(){

    data.removeAllSeries();

    for(int i=0;i<tables.size();i++){

        final XYSeries series = new XYSeries(tables.get(i).getName());

        for(int j=0;j<mostIntensiveTables.get(i).getChangesForChart().size();j++){
            series.add(j,mostIntensiveTables.get(i).getChangesForChart().get(j));
        }

        int found=0;
        for(int k=0;k<data.getSeriesCount();k++){
            if(data.getSeries(k)==series){
                found=1;
                break;
            }
        }

        if(found==0){
            data.addSeries(series);
        }
    }

}

最后我用数据对象作为参数构建我的图表:

final JFreeChart chart = ChartFactory.createXYLineChart(
            "Most Updated Tables",
            "Version ID", 
            "Number of Changes", 
            data,
            PlotOrientation.VERTICAL,
            true,
            true,
            false
    );