2種方法畫散點圖

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
}
相關文章
相關標籤/搜索