在JavaFX折线图中,一种双轴图表,将数据显示为由直线连接的一系列点。所有点都用一条线连接起来。但我想将它们与我的订单联系起来。像有三个点p1(x1,y1),p2(x2,y2),p3(x3,y3)。在折线图中,它们都用一条线连接,但我想分别连接p1,p3和p1,p2。我怎样才能做到这一点 ? X轴和Y轴必须出现在那里。
答案 0 :(得分:2)
默认情况下,JavaFX将连接系列中的所有点。简单的解决方案是使用多个系列。请注意,您无法在系列之间共享数据实例,因为数据存储了对节点的反向引用 - 请参阅javafx.scene.chart.XYChart.Data.getNode()
@Override
public void start(Stage primaryStage) throws Exception {
NumberAxis xAxis1 = new NumberAxis();
NumberAxis yAxis1 = new NumberAxis();
LineChart<Number, Number> chart = new LineChart<Number, Number>(xAxis1, yAxis1);
double p1x = 0;
double p1y = 0;
double p2x = 5;
double p2y = 5;
double p3x = 3;
double p3y = 5;
Series<Number, Number> series1 = new Series<>();
series1.getData().add(new Data<>(p1x, p1y));
series1.getData().add(new Data<>(p2x, p2y));
chart.getData().add(series1);
Series<Number, Number> series2 = new Series<>();
series2.getData().add(new Data<>(p2x, p2y));
series2.getData().add(new Data<>(p3x, p3y));
chart.getData().add(series2);
primaryStage.setScene(new Scene(chart));
primaryStage.show();
}
答案 1 :(得分:0)
我改进了@Adam的答案来解决你的新探测:
@Override
public void start(Stage primaryStage) throws Exception {
NumberAxis xAxis1 = new NumberAxis();
NumberAxis yAxis1 = new NumberAxis();
LineChart<Number, Number> chart = new LineChart<Number, Number>(xAxis1, yAxis1);
Random random = new Random();
ArrayList<Series<Number, Number>> seriesContainer = new ArrayList();
for(int i = 0; i < 10; i++)
{
Series<Number, Number> series1 = new Series<>();
series1.getData().add(new XYChart.Data<>(random.nextDouble() * 100, random.nextDouble() * 100));
series1.getData().add(new XYChart.Data<>(random.nextDouble() * 100, random.nextDouble() * 100));
seriesContainer.add(series1);
}
chart.getData().addAll(seriesContainer);
primaryStage.setScene(new Scene(chart));
primaryStage.show();
}