javafx图表不起作用

时间:2015-12-28 18:13:16

标签: javafx javafx-2 javafx-8

enter image description here

我正在为我的项目使用javafx图表,在运行我的程序后,我得到了这个图表。我希望它先获得第3点然后第4点。有没有办法做到这一点。感谢

1 个答案:

答案 0 :(得分:0)

我很确定您使用的'AreaChart'会单调地绘制数据。因此,无论点数添加到您的系列中的顺序是什么,图表都会将它们绘制为单调的。

注意:Monotonic意味着对于每个x值,都有一个y值。

如果你想打破你的阴谋的'单调性'并且你愿意放弃阴影区域,你可以将它构建为lineChart然后你需要改变你的排序策略。我在下面附上了一个示例,向您展示如何解决它。

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.scene.layout.Pane;
import javafx.stage.Stage;

public class Main extends Application {
@Override
public void start(Stage primaryStage) throws Exception{
    Pane root = new Pane();

    NumberAxis xAxis = new NumberAxis();
    NumberAxis yAxis = new NumberAxis();

    LineChart chart = new LineChart(xAxis,yAxis);

    XYChart.Series series = new XYChart.Series();

    chart.getData().add(series);
    chart.setAxisSortingPolicy(LineChart.SortingPolicy.NONE);

    series.getData().add(new XYChart.Data(0,1));
    series.getData().add(new XYChart.Data(1,2));
    series.getData().add(new XYChart.Data(2,1));
    series.getData().add(new XYChart.Data(1,0));

    root.getChildren().add(chart);

    primaryStage.setTitle("Hello World");
    primaryStage.setScene(new Scene(root));
    primaryStage.show();
}


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

不幸的是,如果您正在寻找这两种方法,那么通过扩展XYChart甚至是AreaChart并定义您自己的自定义AreaChart,我们必须建立您自己的图表类。