scala - 更新 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))))
解决方案
推荐阅读
- java - 如何将密码与 PBEKeySpec 哈希一起使用
- javascript - 无法将项目推送到 mongodb 数组中
- java - 使用springboot,当名称为file1,file2,file3时如何获取MultipartFile
- android - 即使收到确认,SMS Android 应用程序也无法始终发送 SMS
- rancher - 创建 k3s 集群(第二个节点)时出现令牌错误
- java - 将行条目与 apache-spark 中的一个或多个先前行值进行比较
- string - 用逗号查找单词
- javascript - 如果 preventDefault() 仅阻止默认浏览器操作,您如何取消 customEvent?
- excel - 将范围内的多列堆叠为一列的 VBA 代码得到运行时错误 1004(粘贴和复制区域的大小和形状不同)
- javascript - 函数中的 JavaScript 图像预加载