在 TornadoFX 中使用生成的数据填充折线图

Filling a line chart with generated data in TornadoFX

我正在尝试使用 TornadoFX 将 table 数据转换为一系列折线图。 table 中的每一行都应对应于图表中的命名行。作为开始,我遵循了 TornadoFX guide,但这只涵盖了具有硬编码值的用例。

这是 TornadoFX 指南示例:

linechart("Unit Sales Q2 2016", CategoryAxis(), NumberAxis()) {

    multiseries("Product X", "Product Y") {
        data("MAR", 10245, 28443)
        data("APR", 23963, 22845)
        data("MAY", 15038, 19045)
    }
}

我成功地为该系列创建了标签,但仅此而已:

val multiSeriesHeader = table.columHeaders.map { it.toString() }.toTypedArray()

linechart("Unit Sales Q2 2016", CategoryAxis(), NumberAxis()) {
    multiseries(*multiSeriesHeader) {
        // Here I want something like:
        // multidata( array of lines in the matrix, in the "data" format )
    }
}

我的最终目标是 "automatically generate" 新行 data("Month", values...),这样我就可以通过将更多值附加到 "line-data" 列表来为图表创建更多行。然而,我对 linechart 方法创建折线图的方式以及对 multiseriesdata 的后续调用如何转换为参数(通过这些块)感到完全迷失。

我是 TornadoFX 的新手,对 Kotlin 有点陌生。所以,我不知道语言或库中是否有技巧可以解决我的问题。非常感谢您的帮助!

假设您有一个列表 myList,每个元素中都有各自的属性 a b c,那么可以使用 myList 中的循环为每个项目调用 data(),即

myList.forEach { item ->
    data( item.a, item.b, item.c)
}

而不是为每个数据点手动调用data()