【问题标题】:ios Coreplot is duplicating dataios Coreplot 正在复制数据
【发布时间】:2012-11-24 17:57:07
【问题描述】:

我有一个计时器,它正在更新我的 coreplot 数据以产生实时统计数据的错觉。当计时器触发时,它会向数组添加一个值并刷新散点图。这很好用,但是一旦我绘制了大约 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 获得了所有的初始情节。 非常感谢任何帮助。

【问题讨论】:

    标签: ios arrays core-plot


    【解决方案1】:

    我发现并不是数组把所有东西都扔掉了。散点图不会删除以前的图,而只是添加图。看起来它是相同的情节,因为它只是添加点并在旧点之上重新绘制它。一旦你删除一个点,那么他们就不会排队。那么下一个问题是你如何消除旧情节......

    【讨论】:

      【解决方案2】:

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

      绘图库 示例应用程序中的“实时绘图”显示了一种更新数据的更好方法。它会删除过期的数据点并仅添加新数据,而不是在每次更新时重新加载所有内容。只有 10 个数据点,这可能无关紧要,但如果您有更大的数据数组,只更新更改的数据可以提高性能。

      【讨论】:

        猜你喜欢
        • 2012-11-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多