从轴中删除负值

Removing negative values from axis

我有一个 BarChart 和一个 LineChart

可能的值从负 (-) 到正 (+)。我将如何只显示正轴标签?就像只删除数字一样。

我应该制作自定义图表还是有更简单的方法?

您可以将 Y 轴下限设置为 0 并禁用自动调整范围:

    yAxis.setAutoRanging(false);
    yAxis.setLowerBound(0);

这是一个例子:

public class FXChart extends Application {

    @Override
    public void start(Stage stage) {
        final NumberAxis xAxis = new NumberAxis();
        final NumberAxis yAxis = new NumberAxis();
        final LineChart<Number, Number> lineChart
                = new LineChart<>(xAxis, yAxis);

        //defining a series
        XYChart.Series series = new XYChart.Series();
        series.setName("My portfolio");
        //populating the series with data
        series.getData().add(new XYChart.Data(1, 23));
        series.getData().add(new XYChart.Data(2, -14));
        series.getData().add(new XYChart.Data(3, 15));
        series.getData().add(new XYChart.Data(4, -24));
        series.getData().add(new XYChart.Data(5, 34));
        series.getData().add(new XYChart.Data(6, -36));
        series.getData().add(new XYChart.Data(7, 22));
        series.getData().add(new XYChart.Data(8, -45));
        series.getData().add(new XYChart.Data(9, 43));
        series.getData().add(new XYChart.Data(10, -17));
        series.getData().add(new XYChart.Data(11, 29));
        series.getData().add(new XYChart.Data(12, 25));

        yAxis.setAutoRanging(false);
        yAxis.setLowerBound(0);

        Scene scene = new Scene(lineChart, 800, 600);
        lineChart.getData().add(series);

        stage.setScene(scene);
        stage.show();
    }
}

查看 NumberAxis 源代码后,我发现 NumberAxis class 中的 DefaultFormatter class 对此负责。所以覆盖它的 toString 方法就足够了。

myAxis.setTickLabelFormatter(new NumberAxis.DefaultFormatter(neerslagAxis) {
            @Override
            public String toString(Number object) {
                if ((double) object < 0) {
                    return "";
                } else {
                    return ("" + object).replace(".0", "");
                }
            }
        });