2016-05-29 5 views
1

Ich verwende derzeit JFreeChart, um ein Liniendiagramm zu erstellen. Dieses Liniendiagramm wird jede Sekunde mit einem neuen Wert aktualisiert (derzeit ein zufälliger Wert). Auf diese Weise können Sie sehen, wie sich Ihre Daten in einem bestimmten Zeitraum geändert haben. Aber nachdem ich über zehn Werte hinzugefügt habe, passen sie nicht mehr in die Linie und werden zu Punkten. Ich möchte nur 5 Werte gleichzeitig anzeigen lassen, die über die gesamten Zeiten verteilt sind. So sieht es jetzt aus: enter image description hereJFreeChart Versteckt (einige) x Achsenwerte

Beachten Sie die Punkte am unteren Rand des Diagramms. Ich möchte, dass es zu diesem geändert wird: enter image description here Beachten Sie, dass ich alle Punkte behalten möchte, die zwischen diesen Zeitpunkten erstellt werden. Also sollten Daten von 11:31:00, 11:31:01, 11:31:02 usw. noch da sein. Diese

ist das, was ich derzeit haben:

LocalDateTime date = LocalDateTime.now(); 

category = new DefaultCategoryDataset(); 
category.addValue(new Random().nextInt(10), "Data", date.getHour() + ":" + date.getMinute() + ":" + date.getSecond()); 

chart = ChartFactory.createLineChart("Values", "Time", "Data", category, PlotOrientation.VERTICAL, false, true, false); 
((NumberAxis) ((CategoryPlot) chart.getPlot()).getRangeAxis()).setStandardTickUnits(NumberAxis.createIntegerTickUnits()); 

Antwort

1

Ich habe es durch einen TimeSeriesChart verwenden. Dies ist, was ich endete mit:

TimeSeriesCollection collection = new TimeSeriesCollection(); 
TimeSeries serie = new TimeSeries("Data"); 
collection.addSeries(serie); 

JFreeChart chart = ChartFactory.createTimeSeriesChart("Data", "Time", "Data", collection, false, true, false);