我正在使用以下内容:Core Plot 2.2,Xcode 7.3.1,iOS 8.3和Objective-C。
我目前能够从赛普拉斯BLE模块获取输入电压数据,并将数据点存储在NSMutableArray *voltageData
中。我在委托方法numberForPlot:field:recordIndex:
中将这些点用作y轴上的值。我有一个NSTimer
对象触发对每0.1 ms捕获电压数据的方法的调用。这是方法:
// kMaxDataPoints = 50;
// '_real' is the voltage data of type Float32
- (void)incomingData:(nonnull NSTimer *)theTimer {
if (self.plotData.count >= kMaxDataPoints) {
[self.plotData removeAllObjects];
[self.plot deleteDataInIndexRange:NSMakeRange(0, kMaxDataPoints)];
[self.voltageData removeAllObjects];
self.currentIndex = -1;
}
self.currentIndex++;
if (self.voltageData == nil) {
self.voltageData = [[NSMutableArray alloc] init];
}
[self.voltageData addObject:[NSNumber numberWithFloat:_real]];
[self.plotData addObject:@(_real)];
[self.plot insertDataAtIndex:(self.plotData.count - 1) numberOfRecords:1];
}
我的可变数组voltageData
和plotData
始终具有正确的值。每次图形到达数据点的末尾时,它都会以正确的电压值“重新启动”,但数据线“附着”到来自原点(0,0)的另一条直线上。想象一下,这条直线画出了数据线......这就是它的样子。
关于发生了什么的想法?正如旁注,我不是用另一点来取代任何一点。我将从阵列中删除所有点,并清除整个图,然后再重新启动。
答案 0 :(得分:0)
在地块上调用-reloadData
而不是-deleteDataInIndexRange:
。这可以确保删除所有旧的绘图数据。