class Header : View() { var x = doubleArrayOf(0.0, 1.0, 2.0) var y = doubleArrayOf(0.0, 10.0, 16.0) val xAxis = NumberAxis("x axis", -0.2, 2.2, 0.1) val yAxis = NumberAxis("y axis", -1.0, 18.0, 1.0) lateinit var sc: ScatterChart<Number, Number> override val root = vbox() { addClass(Styles.header) button("draw ScatterChart") { action { val data1 = FXCollections.observableArrayList<Data<Number, Number>>() x.zip(y).forEach { data1.add(Data(it.first, it.second)) } sc.data.addAll(XYChart.Series(data1)) } } hbox { sc = scatterchart("scatter chart", xAxis, yAxis) { legendSide = Side.RIGHT } add(scatter(x, y, "plot")) } } } fun scatter(x: DoubleArray, y: DoubleArray, title: String): ScatterChart<Number, Number> { val xAxis = NumberAxis() val yAxis = NumberAxis() val chart = ScatterChart(xAxis, yAxis) val chartData = FXCollections.observableArrayList<XYChart.Series<Number, Number>>() val series = XYChart.Series<Number, Number>() val data = FXCollections.observableArrayList<Data<Number, Number>>() for (i in x.indices) { val d = Data(x[i], y[i]) as Data<Number, Number> data.add(d) } series.data = data chartData.addAll(series) chart.data = chartData chart.title = title chart.legendSide = Side.RIGHT return chart }