如何在 JavaFX 中将多个 LineCharts 添加到一个场景/阶段?

javafxobject oriented programmingprogramming更新于 2025/4/14 0:52:17

您可以通过实例化 javafx.scene.chart.LineChart 类来创建折线图。以下是在单个 JavaFX 窗口中创建多个折线图的示例。在这里,我们绘制了一年中三个不同城市的平均气温。

在此示例中,我们定义了一个方法,该方法接受双精度数组形式的数据,创建并返回一个 Linecart。在 start 方法中,我们使用 start() 方法调用了此方法,并使用三个不同的数据集,并使用 FlowPane 显示结果图表。

示例

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.stage.Stage;
import javafx.scene.chart.LineChart;
import javafx.scene.chart.NumberAxis;
import javafx.scene.chart.XYChart;
import javafx.scene.layout.FlowPane;
public class MultipleLineCharts extends Application {
   public void start(Stage stage) {
      Double data1[] = {7.0, 6.9, 9.5, 14.5, 18.2, 21.5, 25.2,26.5, 23.3, 18.3, 13.9, 9.6};
      Double data2[] = {-0.2, 0.8, 5.7, 11.3, 17.0, 22.0, 24.8, 24.1, 20.1, 14.1, 8.6, 2.5};
      Double data3[] = {3.9, 4.2, 5.7, 8.5, 11.9, 15.2, 17.0, 16.6, 14.2, 10.3, 6.6, 4.8};
      //创建一个堆栈窗格来保存图表
      FlowPane pane = new FlowPane(createChart(data1), createChart(data2),
      createChart(data3));
      //设置场景
      Scene scene = new Scene(pane, 595, 350);
      stage.setTitle("Line Chart");
      stage.setScene(scene);
      stage.show();
   }
   public LineChart<Number, Number> createChart(Double[] values) {
      //创建 X 轴和 Y 轴
      NumberAxis xAxis = new NumberAxis();
      NumberAxis yAxis = new NumberAxis();
      xAxis.setLabel("Months");
      yAxis.setLabel("Temperature °C");
      //创建图表
      LineChart<Number, Number> chart = new LineChart<>(xAxis, yAxis);
      XYChart.Series<Number, Number> series = new LineChart.Series<>();
      series.setName("Average Temperatures");
      //设置数据
      for (int i = 0; i < values.length; i++) {
         XYChart.Data<Number, Number> data = new LineChart.Data<>(i, values[i]);
         series.getData().add(data);
      }
      chart.getData().add(series);
      chart.setPrefSize(280, 180);
      return chart;
   }
   public static void main(String args[]){
      launch(args);
   }
}

输出


相关文章