2015-08-26 3 views
1

У меня есть ArrayList, который получает данные от пользовательского ввода, и я создал кнопку, которая при активации запускает график XY Line. Проблема у меня есть, я продолжаю получать ошибки, и мой LineGraph не создадут.Как использовать ArrayList для создания линейной диаграммы XY в java

Я действительно не знаю, как получить данные с моего 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); 

Весь этот код находится в событии действия моей кнопки «создать график». Любая помощь в том, как сделать эту диаграмму, очень ценится.

+3

Что не работает с вашим текущим подходом? Измените свой вопрос, чтобы включить [полный пример] (http://stackoverflow.com/help/mcve). – trashgod

+0

мой текущий подход не работает. Строковый график не создается, но мой аррайалист работает. Эрго, я думаю, проблема заключается в том, что между архаистом и созданием набора данных! –

+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; 
    } 

Во всяком случае то, что я сделал usean XYSeries и использовал для цикла, чтобы добавить все мои ценности в такая серия:

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); 
Смежные вопросы