package graphics; import javafx.application.Application; import javafx.collections.FXCollections; import javafx.collections.ObservableList; import javafx.geometry.Insets; import javafx.scene.Scene; import javafx.scene.chart.*; import javafx.scene.chart.XYChart.Series; import javafx.scene.layout.HBox; import javafx.scene.paint.Color; import javafx.stage.Stage; public class Graphics extends Application { @Override public void start(Stage stage)// Заголовок вінка програми { stage.setTitle("Унаочнення числових даних засобами JavaFX"); double x0 = 1, // найменше значення абсциси x1 = 4, // найбільше значення абсциси dx = 0.5, // приріст абсциси між поділками на осі y0 = -1.5,// найменше значення ординати y1 = 1.5, // найбільше значення ординати dy = 0.5; // приріст ординати між поділками на осі int n = 100; // кількість точок ламаної NumberAxis xAxis_Line = new NumberAxis(x0,x1,dx); NumberAxis yAxis_Line = new NumberAxis(y0,y1,dy); xAxis_Line.setLabel("Аргумент"); // Підпис горизонтальної осі yAxis_Line.setLabel("Значення функції"); // Підпис вертикальної осі LineChart lineChart = new LineChart<>(xAxis_Line, yAxis_Line); lineChart.setTitle("LineChart"); // Заголовок графіка lineChart.setCreateSymbols(false); // Вимикання "символів" у точках double h = (x1-x0)/n; // Додаємо ім'я і точки першої функції: XYChart.Series f1 = new XYChart.Series<>(); XYChart.Series f2 = new XYChart.Series<>(); f1.setName("sin(x)"); f2.setName("sin(x^2)"); for (double x = x0; x <= x1; x += h) { f1.getData().add(new XYChart.Data<>(x, Math.sin(x))); f2.getData().add(new XYChart.Data<>(x, Math.sin(x*x))); } lineChart.getData().addAll(f1, f2); //------------------------------------------------------------- XYChart.Series sF = new XYChart.Series(); XYChart.Series sG = new XYChart.Series(); XYChart.Series sH = new XYChart.Series(); sF.setName("f"); sG.setName("g"); sH.setName("h"); sF.getData().add(new XYChart.Data(0, 5)); sF.getData().add(new XYChart.Data(3, 1)); sF.getData().add(new XYChart.Data(6, 3)); sF.getData().add(new XYChart.Data(9, 2)); sF.getData().add(new XYChart.Data(12, 4)); sG.getData().add(new XYChart.Data(0, 1)); sG.getData().add(new XYChart.Data(3, 4)); sG.getData().add(new XYChart.Data(6, 2)); sG.getData().add(new XYChart.Data(9, 5)); sG.getData().add(new XYChart.Data(12,1)); sH.getData().add(new XYChart.Data(0, 1)); sH.getData().add(new XYChart.Data(3, 2)); sH.getData().add(new XYChart.Data(6, 3)); sH.getData().add(new XYChart.Data(9, 4)); sH.getData().add(new XYChart.Data(12,5)); final NumberAxis xAxisArea = new NumberAxis (-1, // найменше відображуване значення абсциси x 13, // найбільше відображуване значення ординати y 2); // приріст абсциси x між підписами поділок нна осі final NumberAxis yAxisArea = new NumberAxis(); final StackedAreaChart stackedAreaChart = new StackedAreaChart(xAxisArea, yAxisArea); // Зміна кольору і товщини осой xAxisArea.setLabel("Аргумент"); // Підпис горизонтальної осі yAxisArea.setLabel("Значення функції"); // Підпис вертикальної осі stackedAreaChart.getData().addAll(sF, sG, sH); stackedAreaChart.setTitle("StackedAreaChart"); //------------------------------------------------------ final CategoryAxis xAxis = new CategoryAxis(); final NumberAxis yAxis = new NumberAxis(); final StackedBarChart stackedBarChart = new StackedBarChart(xAxis,yAxis); stackedBarChart.setTitle("StackedBarChart");// Заголовок гістограми xAxis.setLabel("Роки"); // Підпис горизонтальної осі yAxis.setLabel("Кількість"); // Підпис вертикальної осі // Підписи й числові дані кругової діаграми XYChart.Series s1 = new XYChart.Series(); s1.setName("X"); s1.getData().add(new XYChart.Data("2020", 2560)); s1.getData().add(new XYChart.Data("2021", 2676)); XYChart.Series s2 = new XYChart.Series(); s2.setName("Y"); s2.getData().add(new XYChart.Data("2020", 2027)); s2.getData().add(new XYChart.Data("2021", 1900)); XYChart.Series s3 = new XYChart.Series(); s3.setName("Z"); s3.getData().add(new XYChart.Data("2020", 2456)); s3.getData().add(new XYChart.Data("2021", 2567)); stackedBarChart.getData().addAll(s1, s2, s3);// //----------------------------------------------------------- ScatterChart scatterChart = new ScatterChart<> (new NumberAxis(0, 5, 1), new NumberAxis(0, 5, 1)); scatterChart.setTitle("ScatterChart"); XYChart.Series sb1 = new XYChart.Series(); sb1.setName("1"); sb1.getData().add(new XYChart.Data(0.5, 4.5, 0.4)); sb1.getData().add(new XYChart.Data( 2, 3, 1.8)); sb1.getData().add(new XYChart.Data( 4, 1, 0.8)); XYChart.Series sb2 = new XYChart.Series(); sb2.setName("2"); sb2.getData().add(new XYChart.Data(1, 0, 0.7)); sb2.getData().add(new XYChart.Data(3, 2, 0.5)); sb2.getData().add(new XYChart.Data(5, 4, 0.3)); scatterChart.getData().addAll(sb1, sb2); HBox hBox = new HBox(); hBox.getChildren().addAll(lineChart,stackedAreaChart,stackedBarChart,scatterChart); hBox.setSpacing(5); hBox.setPadding(new Insets(5,5,5,5)); Scene scene = new Scene(hBox, 1200, 350); // Зміна стилю - задання послідовності власних кольорів - // можна не застосовувати, якщо влаштовують кольори як усталено scene.getStylesheets().add("/graphics/Graphics.css"); stage.setScene(scene); stage.show(); } public static void main(String[] args) {launch(args);} }