【问题标题】:Why is my LineChart x-axis failing to sort?为什么我的 LineChart x 轴无法排序?
【发布时间】:2015-08-28 22:48:27
【问题描述】:

我有一个 LineChart 实例,用于在折线图中显示信息,但它无法正确排序 x 轴。

public class Main extends Application {

@Override public void start(Stage stage) {

    stage.setTitle("Line Chart Sample");
    final CategoryAxis xAxis = new CategoryAxis();
    final NumberAxis yAxis = new NumberAxis();
    xAxis.setLabel("Month");
    final LineChart<String,Number> lineChart =
            new LineChart<String,Number>(xAxis,yAxis);

    lineChart.setTitle("Stock Monitoring, 2010");

    XYChart.Series series1 = new XYChart.Series();
    series1.setName("Portfolio 1");

    series1.getData().add(new XYChart.Data("4", 12.15));
    series1.getData().add(new XYChart.Data("7", 11.25));
    series1.getData().add(new XYChart.Data("10", 3.00));
    series1.getData().add(new XYChart.Data("14", 1.60));
    series1.getData().add(new XYChart.Data("19", 1.05));
    series1.getData().add(new XYChart.Data("25", 26.30));
    series1.getData().add(new XYChart.Data("26", 7.50));
    series1.getData().add(new XYChart.Data("27", 4.05));
    series1.getData().add(new XYChart.Data("28", 4.00));

    XYChart.Series series2 = new XYChart.Series();
    series2.setName("Portfolio 2");
    series2.getData().add(new XYChart.Data("7", 21.75));
    series2.getData().add(new XYChart.Data("28", 13.20));

    XYChart.Series series3 = new XYChart.Series();
    series3.setName("Portfolio 3");
    series3.getData().add(new XYChart.Data("2", 5.60));
    series3.getData().add(new XYChart.Data("3", 7.70));
    series3.getData().add(new XYChart.Data("10", 25.85));
    series3.getData().add(new XYChart.Data("19", 6.00));
    series3.getData().add(new XYChart.Data("28", 4.85));
    series3.getData().add(new XYChart.Data("29", 0.80));

    XYChart.Series series4 = new XYChart.Series();
    series4.setName("Portfolio 4");
    series4.getData().add(new XYChart.Data("9", 6.35));
    series4.getData().add(new XYChart.Data("11", 3.20));
    series4.getData().add(new XYChart.Data("19", 6.45));
    series4.getData().add(new XYChart.Data("28", 6.00));
    series4.getData().add(new XYChart.Data("29", 4.00));

    Scene scene  = new Scene(lineChart,800,600);
    lineChart.getData().addAll(series1, series2, series3, series4);

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


public static void main(String[] args) {
    launch(args);
}
}

但是 X 轴的顺序有问题。 它排序完全错误。查看结果:

基本上,如果 y 轴上只有一个值对应一个 x 值,它将显示在不正确的位置。调试器显示数据已按预期顺序添加。

顺便说一句,如果删除所有其他图表,每个图表都可以正确显示。

【问题讨论】:

    标签: java charts javafx linechart


    【解决方案1】:

    我相信这是因为您将 CategoryAxis 用于 xAxis。这意味着您正在添加带有字符串值标签的类别(它们恰好是数字)。所以它不知道顺序很重要。

    您可以通过对 xAxis 使用 NumberAxis 来修复它。然后,如果 xAxis 标签的十进制值(它会自动插入刻度线)不是您想要的,您可以使用自定义的 TickLabelFormatter,就像 this question. 中概述的那样。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-04-17
      • 1970-01-01
      • 1970-01-01
      • 2018-11-14
      • 1970-01-01
      • 2017-02-27
      • 1970-01-01
      相关资源
      最近更新 更多