JavaFX LineChart Datenpunkte Markierung wird abgeschnitten

godi

Aktives Mitglied
Hallo,
ich habe in JavaFX einen LineChart. Als Datenpunkte habe ich die standardmäßigen Kreise welche für mich auch gut passen.
Die y-Achse sollte von 0 bis 100 sein und die x-Achse von 0 bis einen variablen Wert (im Beispiel vereinfacht fix).

Jetzt habe ich das Problem, dass die Kreise der Datenpunkte an den Rändern abgeschnitten werden.
Ok, dies wollte ich einfach durch das ändern der Range beheben. Dadurch ergibt sich aber das Problem, dass die TicksMarker nicht mehr bei 0 beginnen und auch "krumme" Zahlen bekommen.
Wie kann ich dies beheben?

Mein Ansatz war den Formatter und das Visible flag zu ändern. Führt aber leider nicht zum gewünschten Erfolg.
Gibt es einen anderen Ansatz, damit die Kreise nicht abgeschnitten werden?

Zusatz-Hinweis: Im gesamten Projekt, ist auch noch eine Linie über die ganze y-Höhe am x Punkt 0 eingezeichnet, welche nicht sichtbar ist wenn die X Achse erst bei 0 anfängt.

Java:
package org.example;

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.chart.LineChart;
import javafx.scene.chart.NumberAxis;
import javafx.scene.chart.XYChart;
import javafx.stage.Stage;

public class TickMarkExample extends Application {

    @Override
    public void start(Stage primaryStage) {
        // X-Axis
        NumberAxis xAxis = new NumberAxis(-0.1, 12.55, 0.1);
        xAxis.setMinorTickVisible(false);
        xAxis.setAnimated(false); // Disable animation for easier access to TickMarks

        // Set new formatter for the x-axis to show only labels at 0, 0.1, ...
        xAxis.setTickLabelFormatter(new NumberAxis.DefaultFormatter(xAxis) {
            @Override
            public String toString(Number object) {
                // Round the value to one decimal place
                var val = Math.round(object.doubleValue() * 10.0) / 10.0;
                // Show labels only for values greater than or equal to 0
                if (val >= 0.0) {
                    return String.valueOf(val);
                }
                return "";
            }
        });

        // Y-Axis
        NumberAxis yAxis = new NumberAxis(-2, 102, 5);
        yAxis.setLabel("Y-Axis");

        // Create LineChart
        LineChart<Number, Number> lineChart = new LineChart<>(xAxis, yAxis);
        lineChart.setTitle("Line Chart Example");

        // Data
        XYChart.Series<Number, Number> series = new XYChart.Series<>();
        series.getData().add(new XYChart.Data<>(0, 0));
        series.getData().add(new XYChart.Data<>(1, 10));
        series.getData().add(new XYChart.Data<>(2, 100));
        series.getData().add(new XYChart.Data<>(3, 0));
        series.getData().add(new XYChart.Data<>(12.5, 100));

        lineChart.getData().add(series);

        // Create scene
        Scene scene = new Scene(lineChart, 600, 400);

        // Configure stage
        primaryStage.setTitle("JavaFX LineChart Example");
        primaryStage.setScene(scene);
        primaryStage.show();

        // Access the TickMarks of the X-Axis and change the visible flag
        for (int i = 0; i < xAxis.getTickMarks().size(); i++) {
            javafx.scene.chart.NumberAxis.TickMark<Number> tickMark = xAxis.getTickMarks().get(i);
            double tickValue = tickMark.getValue().doubleValue();

            // Set the visible flag to show the TickMark at 0 and hide for negative values
            tickMark.setTextVisible(tickValue >= 0);
        }
    }

    public static void main(String[] args) {
        launch(args);
    }
}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
B JavaFX LineChart mit Date-x-Achse 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
J Anzeige ID und Markierung für Knoten in Eclipse & Swing AWT, Swing, JavaFX & SWT 1
F Swing JTree + DiffUtils // Markierung Nodes aufheben AWT, Swing, JavaFX & SWT 2
P Swing JTable keine Markierung nach Button klick AWT, Swing, JavaFX & SWT 0
K JTabbedPane Tab Markierung / Selektion AWT, Swing, JavaFX & SWT 4
B Fokus markierung entfernen AWT, Swing, JavaFX & SWT 2
R Swing Hintergrundfarbe der Zelle in einer JTable bei Markierung AWT, Swing, JavaFX & SWT 2
C SWT CTabFolder / CTabItem Markierung des angewählten Tabs entfernen AWT, Swing, JavaFX & SWT 10
M Auf einem Bild eine Markierung aufziehen AWT, Swing, JavaFX & SWT 3
J Swing JTable Markierung AWT, Swing, JavaFX & SWT 10
aze JTextField:Keine Markierung AWT, Swing, JavaFX & SWT 6
R JPanel - Markierung an der Mausposition zeichnen AWT, Swing, JavaFX & SWT 4
G JButton und andere J-Elemente: Markierung ausblenden AWT, Swing, JavaFX & SWT 6
G Farbe der Markierung einer Componente ändern AWT, Swing, JavaFX & SWT 2
V Vector->TableModel->RowSorter:Bei Markierung Index im AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben