ios Coreplot正在复制数据

时间:2012-11-24 17:57:07

标签: ios arrays core-plot

我有一个计时器正在更新我的核心数据数据,以给出实时统计数据的错觉。当计时器触发时,它会向数组添加一个值并刷新散点图。这很好用,但是一旦我绘制了大约10个数据点,我想开始删除第一个点,只显示最后10个数据点。但是当我尝试删除数据时,它会在另一端显示旧数据点和新数据点。我无法弄清楚为什么会这样。我试图将阵列弄清楚并重置它,但一切都无济于事。关于为什么会发生这种情况的任何想法。这是一些代码:

//START GRAPHING
  self.count = 0;
  if (numberOfPackets == 1){ //on the first packet
          [self.repeatingTimer invalidate];
          self.repeatingTimer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(updateArray:) userInfo:nil repeats:YES];
          self.arrayII = [[NSMutableArray alloc] init];
          [self initPlot];
   }

-(void) updateArray:(NSTimer *)timer{
    self.count++;
   // self.arrayII sources scatter plot data.
    if (self.count < [dataPacketArray count]){
        if (self.count > 5){
            [self.arrayII removeObjectAtIndex:0]; //if I don't include this it works flawlessly.
        }
        [self.arrayII addObject:[dataPacketArray objectAtIndex:self.count]];
    }
    [self.view reloadInputViews];
    [self configurePlots];
}

-(void) initPlot {
    [self configureHost];
    [self configureGraph];
    [self configurePlots];
    [self configureAxes];
}

我从this tutorial获得了所有初始情节。 非常感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

我发现这不是将一切都扔掉的阵列。散点图不是删除以前的图,而只是添加图。看起来它是相同的情节,因为它只是添加点并在旧的上面重新编号。一旦你删除了一个点,那么它们就不会排成一行。然后接下来的问题是你如何把旧情节弄清楚......

答案 1 :(得分:0)

我假设-configurePlots方法是将图添加到图中的方法。每次数据更改时都不要调用该方法。使用图上的-reloadData方法强制它重新加载所有数据。

Plot Gallery 示例应用中的“实时图”显示了更新此类数据的更好方法。它删除过期的数据点并仅添加新数据,而不是在每次更新时重新加载所有内容。只有10个数据点,可能无关紧要,但如果您有更大的数据阵列,只更新已更改的数据可以提高性能。