JavaFX LineChart mit Date-x-Achse

Bela B.

Aktives Mitglied
Servus zusammen,

ich bin gerade dabei, mit JavaFX eine Auswertesoftware für Temperaturverläufe zu schreiben. Dabei muss ich ein LineChart mit einer Datumsachse für die x-Achse verwenden.

In den zugrundeliegenden Daten-Klassen habe ich direkt java.time.LocalDateTime für die Zeitpunkte der einzelnen Temperaturwerte verwendet.
Jetzt will ich direkt das LocalDateTime für die x-Achse verwenden, allerdings gibt es bei der LineChart keine passende Achse.

In meinen alten Programme habe ich dafür ein Package im Internet gefunden, das mir eine DateAxis zur Verfügung stellt.
Der Name dieses Packages ist extfx, leider kann ich dazu aber im Internet nicht mehr etwas dazu finden.

Bei meinen neuen Programmen verwende ich richtigerweise Gradle und manage meine Dependencies entsprechend damit, nur gibt es eben kein Artifact von extfx.

Wie macht ihr ein Datumsbasiertes LineChart?
Oder wie soll ich nun mit diesem Package umgehen, da kein Artifact?
 

looparda

Top Contributor
So?
XML:
<?xml version="1.0" encoding="UTF-8"?>

<?import javafx.scene.layout.VBox?>
<?import javafx.scene.chart.LineChart?>
<?import javafx.scene.chart.CategoryAxis?>
<?import javafx.scene.chart.NumberAxis?>
<VBox xmlns="http://javafx.com/javafx"
      xmlns:fx="http://javafx.com/fxml"
      fx:controller="com.sample.ChartController">
    <LineChart prefHeight="600" fx:id="chart">
        <xAxis>
            <CategoryAxis label="Time"/>
        </xAxis>
        <yAxis>
            <NumberAxis label="Value"/>
        </yAxis>
    </LineChart>
</VBox>
Java:
public class ChartController {

    @FXML
    public LineChart<String, Double> chart;

    @FXML
    public void initialize() {

        final MesspunktProducer messpunktProducer = new MesspunktProducer();

        ObservableList<Series<String, Double>> data = observableArrayList();
        data.add(messpunktProducer.getSeries());
        chart.setData(data);

        new Thread(messpunktProducer).start();
    }

    private static class MesspunktProducer implements Runnable {
        private Series<String, Double> series;
        private ObservableList<Data<String, Double>> seriesData = observableArrayList();

        private MesspunktProducer() {
            series = new Series<>(seriesData);
        }

        @SneakyThrows
        @Override
        public void run() {
            while (true) {
                final Messpunkt messPunkt = new Messpunkt(randomValue(), now());
                Platform.runLater(() -> seriesData.add(new Data<>(String.valueOf(messPunkt.getTime()), messPunkt.getValue())));
                TimeUnit.SECONDS.sleep(1);
            }
        }

        private static double randomValue() {
            return ThreadLocalRandom.current().nextDouble(100.0);
        }

        private Series<String, Double> getSeries() {
            return series;
        }
    }
}
Java:
@Data
public class Messpunkt {
    private final Double value;
    private final LocalDateTime time;
}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
G JavaFX LineChart Datenpunkte Markierung wird abgeschnitten AWT, Swing, JavaFX & SWT 1
H JavaFX LineChart y-Achse invertieren AWT, Swing, JavaFX & SWT 2
V JFreechart: In Linechart Linien einzeichnen und Bereiche färben AWT, Swing, JavaFX & SWT 4
Juelin valid Date und valid Time AWT, Swing, JavaFX & SWT 6
A Swing suche OpenSource Date(Time)Picker Komponente AWT, Swing, JavaFX & SWT 9
U TableCellRenderer: Problem mit Timestamp/Date AWT, Swing, JavaFX & SWT 2
M Date Picker mit 3 ComboBoxen AWT, Swing, JavaFX & SWT 2
P Suche freien Date und Time Picker AWT, Swing, JavaFX & SWT 3
G Date in einen String umwandeln AWT, Swing, JavaFX & SWT 4
C JFreeChart X-Achse Werte skalieren, begrenzen, zoomen AWT, Swing, JavaFX & SWT 5
B JavaFX Bild um die eigene Achse drehen lassen AWT, Swing, JavaFX & SWT 0
C JFreeChart x-Achse mit absteigenden Werten AWT, Swing, JavaFX & SWT 1
S JavaFX Drehen um eigene Achse AWT, Swing, JavaFX & SWT 2
M Swing JFreechart X-Achse Tick auslesen AWT, Swing, JavaFX & SWT 13
M Swing JFreechart zoom x-achse neue Werte AWT, Swing, JavaFX & SWT 4
D JFreeChart range der Y Achse verändern. AWT, Swing, JavaFX & SWT 1
G Swing resizeable aber nur y-Achse nur wie? AWT, Swing, JavaFX & SWT 5
R JFreeChart: nur jeden n-ten Wert auf der X-Achse anzeigen AWT, Swing, JavaFX & SWT 5
T Processing: Bild auf X-Achse bewegen AWT, Swing, JavaFX & SWT 4
S JFreeChart Achse immer sichtbar AWT, Swing, JavaFX & SWT 2
R JPanel - zeichnen in skalierten Bereich - Linie (X-Achse) nicht sichtbar AWT, Swing, JavaFX & SWT 11

Ähnliche Java Themen

Neue Themen


Oben