网站首页 > 教程分享 正文
折线图,一种双轴图表,显示了特定时间间隔内数据的动态。
对于双轴图表,我们可以定义一系列数据XYChart.Series类。
我们可以为每个系列分配一个名称,以便在图例中显示。
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.stage.Stage; public class Main extends Application { @Override public void start(Stage stage) { final NumberAxis xAxis = new NumberAxis(); final NumberAxis yAxis = new NumberAxis(); xAxis.setLabel("Number of Month"); final LineChart<Number, Number> lineChart = new LineChart<Number, Number>( xAxis, yAxis); lineChart.setTitle("Line Chart"); XYChart.Series<Number, Number> series = new XYChart.Series<Number, Number>(); series.setName("My Data"); // populating the series with data series.getData().add(new XYChart.Data<Number, Number>(1, 23)); series.getData().add(new XYChart.Data<Number, Number>(2, 114)); series.getData().add(new XYChart.Data<Number, Number>(3, 15)); series.getData().add(new XYChart.Data<Number, Number>(4, 124)); Scene scene = new Scene(lineChart, 800, 600); lineChart.getData().add(series); stage.setScene(scene); stage.show(); } public static void main(String[] args) { launch(args); } }
上面的代码生成以下结果。
折线图创建
对于每个图表,我们可以设置标题及其相对于图表的位置。标题可以位于图表的顶部,右侧,左侧或底部。
我们可以以相同的方式指定图表图例的位置。
import javafx.application.Application; import javafx.collections.FXCollections; import javafx.collections.ObservableList; import javafx.scene.Scene; import javafx.scene.chart.CategoryAxis; import javafx.scene.chart.LineChart; import javafx.scene.chart.NumberAxis; import javafx.scene.chart.XYChart; import javafx.scene.chart.XYChart.Series; import javafx.scene.layout.StackPane; import javafx.stage.Stage; public class Main extends Application { public static void main(String[] args) { launch(args); } @Override public void start(Stage primaryStage) { CategoryAxis xAxis = new CategoryAxis(); NumberAxis yAxis = new NumberAxis(); LineChart lineChart = new LineChart(xAxis, yAxis); lineChart.setData(getChartData()); lineChart.setTitle("Chart"); StackPane root = new StackPane(); root.getChildren().add(lineChart); primaryStage.setScene(new Scene(root, 400, 250)); primaryStage.show(); } private ObservableList<XYChart.Series<String, Double>> getChartData() { double aValue = 10; double cValue = 20; ObservableList<XYChart.Series<String, Double>> answer = FXCollections .observableArrayList(); Series<String, Double> aSeries = new Series<String, Double>(); Series<String, Double> cSeries = new Series<String, Double>(); aSeries.setName("a"); cSeries.setName("C"); for (int i = 2001; i < 2021; i++) { aSeries.getData().add(new XYChart.Data(Integer.toString(i), aValue)); aValue = aValue + Math.random()*100 -50; cSeries.getData().add(new XYChart.Data(Integer.toString(i), cValue)); cValue = cValue + Math.random()*100 -50 ; } answer.addAll(aSeries, cSeries); return answer; } }
上面的代码生成以下结果。
折线图的类别
下面的代码显示了如何使用CategoryAxis类而不是NumberAxis类以在线形图中呈现非数字数据。
import javafx.application.Application; import javafx.scene.Scene; import javafx.scene.chart.CategoryAxis; import javafx.scene.chart.LineChart; import javafx.scene.chart.NumberAxis; import javafx.scene.chart.XYChart; import javafx.stage.Stage; public class Main extends Application { @Override public void start(Stage stage) { 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("My Chart"); XYChart.Series<String, Number> series = new XYChart.Series<String, Number>(); series.setName("My data"); series.getData().add(new XYChart.Data<String, Number>("Jan", 23)); series.getData().add(new XYChart.Data<String, Number>("Feb", 114)); series.getData().add(new XYChart.Data<String, Number>("Mar", 15)); series.getData().add(new XYChart.Data<String, Number>("Apr", 24)); series.getData().add(new XYChart.Data<String, Number>("May", 134)); Scene scene = new Scene(lineChart, 800, 600); lineChart.getData().add(series); stage.setScene(scene); stage.show(); } public static void main(String[] args) { launch(args); } }
上面的代码生成以下结果。
将系列添加到折线图
import javafx.application.Application; import javafx.scene.Scene; import javafx.scene.chart.CategoryAxis; import javafx.scene.chart.LineChart; import javafx.scene.chart.NumberAxis; import javafx.scene.chart.XYChart; import javafx.stage.Stage; public class Main extends Application { @Override public void start(Stage stage) { 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("My Chart"); XYChart.Series<String, Number> series1 = new XYChart.Series<String, Number>(); series1.setName("Portfolio 1"); series1.getData().add(new XYChart.Data<String, Number>("Jan", 23)); series1.getData().add(new XYChart.Data<String, Number>("Feb", 14)); series1.getData().add(new XYChart.Data<String, Number>("Mar", 15)); XYChart.Series<String, Number> series2 = new XYChart.Series<String, Number>(); series2.setName("Portfolio 2"); series2.getData().add(new XYChart.Data<String, Number>("Jan", 33)); series2.getData().add(new XYChart.Data<String, Number>("Feb", 34)); series2.getData().add(new XYChart.Data<String, Number>("Mar", 25)); series2.getData().add(new XYChart.Data<String, Number>("Apr", 44)); XYChart.Series<String, Number> series3 = new XYChart.Series<String, Number>(); series3.setName("Portfolio 3"); series3.getData().add(new XYChart.Data<String, Number>("Jan", 44)); series3.getData().add(new XYChart.Data<String, Number>("Feb", 35)); series3.getData().add(new XYChart.Data<String, Number>("Mar", 36)); series3.getData().add(new XYChart.Data<String, Number>("Apr", 33)); series3.getData().add(new XYChart.Data<String, Number>("May", 31)); Scene scene = new Scene(lineChart, 800, 600); lineChart.getData().addAll(series1, series2, series3); stage.setScene(scene); stage.show(); } public static void main(String[] args) { launch(args); } }
猜你喜欢
- 2024-09-29 JavaFX-实现画圆弧(java 画圆)
- 2024-09-29 JavaFX文件选择器(java 文件选择器)
- 2024-09-29 JavaFx 实现按钮防抖和软件重启(Kotlin)
- 2024-09-29 JavaFX学习笔记017(单选按钮和复选框)
- 2024-09-29 JavaFX学习笔记014(菜单栏)(javafx包含功能)
- 2024-09-29 JavaFX 文本字段(javafx 文本编辑器)
- 2024-09-29 还有用Eclipse的吗?这有一个图形编辑框架,据说很厉害!
- 2024-09-29 JavaFX学习入门篇,想用Java写窗口应用的同学可以看看
- 2024-09-29 JavaFX 滑块(javafx scrollpane)
- 2024-09-29 javafx做的航天事件管理系统(javafx做的航天事件管理系统有哪些)
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- css导航条 (66)
- sqlinsert (63)
- js提交表单 (60)
- param (62)
- parentelement (65)
- jquery分享 (62)
- check约束 (64)
- curl_init (68)
- sql if语句 (69)
- import (66)
- chmod文件夹 (71)
- clearinterval (71)
- pythonrange (62)
- 数组长度 (61)
- javafx (59)
- 全局消息钩子 (64)
- sort排序 (62)
- jdbc (69)
- php网页源码 (59)
- assert h (69)
- httpclientjar (60)
- postgresql conf (59)
- winform开发 (59)
- mysql数字类型 (71)
- drawimage (61)
本文暂时没有评论,来添加一个吧(●'◡'●)