Core Plot - 动态线图 - 画线总是从(0,0)开始

Core Plot - dynamic line graph - line drawing always starts from (0,0)

我正在使用以下内容:Core Plot 2.2、Xcode 7.3.1、iOS 8.3 和 Objective-C.

我目前能够从我的赛普拉斯 BLE 模块获取输入电压数据,并将数据点存储在 NSMutableArray *voltageData 中。我在委托方法 numberForPlot:field:recordIndex: 中将这些点用作我的 y 轴上的值。我有一个 NSTimer 对象,它触发对每 0.1 毫秒捕获一次电压数据的方法的调用。这是该方法:

// 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];
}

我的可变数组 voltageDataplotData 始终具有正确的值。每次图形到达数据点的末尾时,它 "restarts" 处于正确的电压值,但数据线是 "attached" 到来自原点 (0,0) 的另一条直线。想象一下这条直线画出数据线...就是它的样子。

关于正在发生的事情的想法?附带说明一下,我不会用另一点代替任何一点。我将从数组中删除所有点,并清除整个图,然后再次重新启动。

在图上调用 -reloadData 而不是 -deleteDataInIndexRange:。这确保删除所有旧绘图数据。