核心图 - 动态线图 - 线条图始终从(0,0)开始

时间:2017-02-15 20:36:01

标签: objective-c core-plot linegraph

我正在使用以下内容: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];
}

我的可变数组voltageDataplotData始终具有正确的值。每次图形到达数据点的末尾时,它都会以正确的电压值“重新启动”,但数据线“附着”到来自原点(0,0)的另一条直线上。想象一下,这条直线画出了数据线......这就是它的样子。

关于发生了什么的想法?正如旁注,我不是用另一点来取代任何一点。我将从阵列中删除所有点,并清除整个图,然后再重新启动。

1 个答案:

答案 0 :(得分:0)

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