首页 > 解决方案 > 更新 ScalaFX 折线图

问题描述

我正在使用 Scala 构建回归可视化器,并且在适当地更新图表数据和理解逻辑方面遇到了一些困难。

我正在通过菜单成功加载文件中的数据。加载的数据应在图表中作为散点绘制。在稍后阶段,我将添加一个“回归”按钮,该按钮根据数据绘制回归模型,并可能取决于所选的多项式阶数。我计划让原始数据带有透明线,而绘制的数据带有颜色。

我可以正常显示加载的数据,但我设法通过删除旧系列并添加新系列将图表更新为新数据集,但这会增加处理透明颜色等的复杂性。因此,我更喜欢更新现有数据而不是创建一系列新数据。我相信 ObservableBuffer 经常用于此目的。

我已经开始进行如下实验,但我的图表没有更新:

// Before loading the data display an empty chart

var scatterData: List[(Double, Double)] = List()

var scatterXY =  scatterData.map(x => XYChart.Data[Number, Number](x._1, x._2))

var scatterSeries = XYChart.Series("Series", ObservableBuffer(scatterXY))

val lineChart = LineChart(xAxis, yAxis, ObservableBuffer(scatterSeries))
lineChart.setLegendVisible(false)


// Load data with FileChooser (I have Data.scala as a class to read the file)

// FileChoosing here etc.

val data = new Data(selectedFile.toString)

data.loadData(selectedFile)

// Update the scatterData and scatterSeries

scatterData = data.storedData

scatterSeries = XYChart.Series("Series", ObservableBuffer(scatterData.map(x => XYChart.Data[Number, Number](x._1, x._2))))

标签: scalauser-interfacechartsscalafx

解决方案


推荐阅读