2011-08-23 5 views
5

Diciamo che ho generato un grafico con il seguente codice:modificare set di dati di un grafico già costruita con Java e JFreeChart

private ChartPanel createChart(){ 
     XYSeries series1 = new XYSeries("First"); 
     XYSeries series2 = new XYSeries("Second"); 
     XYSeries series3 = new XYSeries("Third"); 

     series1.add(0.0, 5.5); 
     series1.add(5, 10); 
     series1.add(10, 5.5); 

     series2.add(0.0, 2); 
     series2.add(5, 2); 
     series2.add(10, 7); 

     series3.add(0.0, 10); 
     series3.add(5, 5); 
     series3.add(10, 6); 

     XYSeriesCollection dataset = new XYSeriesCollection(); 

     dataset.addSeries(series1); 
     dataset.addSeries(series2); 
     dataset.addSeries(series3); 

     JFreeChart chart = ChartFactory.createXYLineChart("line chart example", 
       "X", "Y", dataset, PlotOrientation.VERTICAL, true, true, false); 
     ChartPanel chartPanel = new ChartPanel(chart); 
     chartPanel.setPreferredSize(new java.awt.Dimension(500, 270)); 
     return chartPanel; 
    } 

Ora vorrei modificare un valore precedentemente inserito in un XYSeries senza costruire un altro grafico (nessun'altra chiamata per creareXYLineChart) e rendere il grafico aggiornato automaticamente.

Come si fa?

risposta

1

Basta dare un'occhiata allo api.

Esistono molti metodi diversi, a seconda se si conosce l'indice dell'elemento nella serie o se si conosce il valore x, ma si desidera modificare il valore y. Presumo che il grafico verrà ridisegnato poiché tutti i metodi generano un evento SeriesChangeEvent.

+0

potresti dirmi almeno un nome di metodo? – Heisenbug

+0

'update',' updateByIndex', 'addOrUpdate'. In realtà, sembra che se vuoi cambiare la coordinata x, dovrai prima cancellare il punto con 'remove'; 'remove' può prendere il valore x o l'indice del punto della serie. – toto2

+0

no..attualmente vorrei cambiare solo la coordinata. Penso che updateByIndex funzionerà. Grazie. – Heisenbug