如何在java中使用ArrayList制作XY折线图

时间:2015-08-26 13:21:00

标签: java arraylist jfreechart

我有一个ArrayList从用户输入中获取数据,我创建了一个按钮,激活时会启动XY线图。我遇到的问题是我不断收到错误而我的LineGraph不会创建。

我真的不知道如何从ArrayList获取数据并将其放入XYSeries

Iterator it = dataXY.iterator();
    XYSeries p1 = new XYSeries("XY");
    while( it.hasNext()) {
        p1.add((XYDataItem) it.next());
    }


    XYSeriesCollection xydata = new XYSeriesCollection();
    xydata.addSeries(p1);

    JFreeChart lineChart = ChartFactory.createXYLineChart("XY chart", "X", "Y", xydata, PlotOrientation.HORIZONTAL, true, true, false);
    lineChart.setBackgroundPaint(Color.WHITE);

    final XYPlot plot = lineChart.getXYPlot();
    XYLineAndShapeRenderer renderer = new XYLineAndShapeRenderer();
    renderer.setSeriesPaint(0, Color.BLACK);
    renderer.setSeriesStroke( 0 , new BasicStroke( 4.0f ) );
    plot.setRenderer( renderer ); 
    plot.setBackgroundPaint(Color.WHITE);


    ChartFrame frame = new ChartFrame ("XY Line Graph", lineChart);
    frame.setVisible(true); 
    frame.setSize(700,500);

所有这些代码都在我的"动作事件中;创建图表"按钮。任何有关如何制作此图表的帮助都非常感谢。

1 个答案:

答案 0 :(得分:1)

最后我甚至不需要转换为数组,尽管我设法这样做:

// converting arraylist to array
    double [][] p1 = new double[dataXY.size()][dataXY.size()];
   for (int i=0; i<dataXY.size(); i++) {
        int x = dataXY.get(i).getX(); int y = dataXY.get(i).getY();
         p1[i][0] = x;
         p1[i][1] = y;
    }

无论如何,我所做的是使用XYSeries并使用for循环将我的所有值添加到系列中,如下所示:

XYSeriesCollection ds = new XYSeriesCollection();
    XYSeries s1 = new XYSeries("XY data");
    for (int i=0; i<dataXY.size(); i++) {
         int x = dataXY.get(i).getX(); int y = dataXY.get(i).getY();
         s1.add(y, x);
    }
    ds.addSeries(s1);