我对swift开发很陌生。我最近使用CorePlot来帮助我实时绘制来自传感器的ECG数据。传感器的采样率是250点/秒。起初,我读了每5点画一次,然后刷新视图,直到填充视图的散点(大约1000点)。但是我发现效率不高,数据会丢失。CorePlot实时绘图
之后,我看到我可以插入更新点来使用-insertDataAtIndex:numberOfRecords
更改图形。我引用了CorePlot中的RealTimePlot示例,但我不知道在Swift中如何完成它。你能给我Swift中的RealTimePlot例子吗?还是告诉我该怎么做?
请帮帮我。
typealias plotDataType = [CPTScatterPlotField : Double]
private var scatterGraph : CPTXYGraph? = nil
func plotChart(ecg:[Int]){
let ecgLinePlot = CPTScatterPlot(frame: CGRectZero)
var ecgContentArray = [plotDataType]()
for i in 0 ..< ecg.count { //ecg.count=1000
let y = Double(ecg[i])/65535.0 + 0.05
let x = Double(i) * 0.1
let dataPoint: plotDataType = [.X: x, .Y:y]
ecgContentArray.append(dataPoint)
}
ecgDataForPlot = ecgContentArray
// MARK: - Plot Data Source Methods
func numberOfRecordsForPlot(plot: CPTPlot) -> UInt
{
return UInt(self.ecgDataForPlot.count)
}
func numberForPlot(plot: CPTPlot, field: UInt, recordIndex: UInt) -> AnyObject?
{
let plotField = CPTScatterPlotField(rawValue: Int(field))
if let ecgNum = self.respDataForPlot[Int(recordIndex)][plotField!]{
return ecgNum as NSNumber
}
}
谢谢埃里克,但我仍然坚持下去。 我想更清楚地问你每一步。你的意思是从剧情中删除旧点,缓存意味着“ecgLinePlot”和“ecgDataForPlot”?我应该使用什么函数? 我目前发现ecgLinePlot.deleteDataInIndexRange,ecgLinePlot.insertDataAtindex,ecgDataForPlot.removeAtIndex,respDataForPlot.insert,我应该为每个步骤使用哪个函数? 谢谢。 – lktlktlkt
这听起来像你在正确的轨道上。如果您无法正常工作,请发布您的代码,以便我们帮助解决问题。 –
它的工作!埃里克,非常感谢。 – lktlktlkt