Bonjour,
Je travaille sur la visualisation de courbes dans le temps (en résumé y=f(t)) et j'utilise la bibliothèque jfreechart qui me semble tout-à fait adéquate. Toutefois il semble que pour ajouter des valeurs à une XYSeries il n'y ait pas d'autre issue que d'y ajouter les valeurs (en t et en y) une par une avec la méthode add().
Est-ce que quelqu'un connait une méthode permettant de passer directement le contenu d'une Liste, ArrayList ou tableau à un XYSeries s'il vous plait ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52 package temp; import java.awt.BasicStroke; import java.awt.Color; import java.awt.Font; import javax.swing.BorderFactory; import javax.swing.JFrame; import javax.swing.SwingUtilities; import java.util.List; import org.jfree.chart.ChartFactory; import org.jfree.chart.ChartPanel; import org.jfree.chart.JFreeChart; import org.jfree.chart.plot.PlotOrientation; import org.jfree.chart.plot.XYPlot; import org.jfree.chart.renderer.xy.StandardXYItemRenderer; import org.jfree.data.xy.XYSeries; import org.jfree.data.xy.XYSeriesCollection; public class recorder extends JFrame { int number=0; public recorder(int number, List time, List values) { this.number=number; XYSeries series = new XYSeries(String.valueOf(number)); // ce sont les 4 lignes suivantes qui ralentissent tout int n_value=time.size(); for (int i=0;i<n_value;i++){ series.add((double)time.get(i),(double)values.get(i)); } // et que je voudrais remplacer par une "simple" affectation XYSeriesCollection dataset = new XYSeriesCollection(series); JFreeChart chart = ChartFactory.createXYLineChart("value","t","y",dataset,PlotOrientation.VERTICAL,true,true,false); XYPlot plot = chart.getXYPlot(); StandardXYItemRenderer renderer = new StandardXYItemRenderer(); renderer.setSeriesPaint(0, Color.BLACK); plot.setRenderer(renderer); plot.setBackgroundPaint(Color.white); plot.setRangeGridlinesVisible(false); plot.setDomainGridlinesVisible(false); ChartPanel chartPanel = new ChartPanel(chart); chartPanel.setPreferredSize(new java.awt.Dimension(600, 400)); chartPanel.setBackground(Color.white); setContentPane(chartPanel); pack(); setTitle("recorder"+String.valueOf(number)); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } }Sinon si quelqu'un connait une autre librairie java encore plus simple et aussi rapide je suis preneur.
Bien à Vous !
Partager