首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >coreplote实时绘图无法在20ms刷新时间间隔内正常执行

coreplote实时绘图无法在20ms刷新时间间隔内正常执行
EN

Stack Overflow用户
提问于 2014-05-26 21:33:16
回答 1查看 82关注 0票数 1

我希望达到这样的目标: XYplot可以每20ms刷新一次,每次刷新时添加5个新点,并在图形视图中显示5000个点(xRanage= 5000,yRange = 2048)。

在前1000个点,刷新速度看起来很正常,但在1000个点之后,每个刷新事件的刷新速度都会变慢。

虽然我使用inertDataAtIndex:numberOfRecords更新数据可以减少程序运行numberForPlot:field:recordIndex函数的次数,但我感觉它还是刷新了所有的图视图,而不是逐点绘制。

因此,在1000个点之后,它仍然缓慢刷新,并随着输入数据的减少而降低。

这是不是意味着核心图不适合做快速实时事件?

这是我的代码:

代码语言:javascript
复制
- (IBAction)Refresh:(UIButton *)sender {
    timer = [NSTimer scheduledTimerWithTimeInterval:0.02 target:self
selector:@selector(show) userInfo:nil repeats:YES];
}

- (void)show {
    for (int i=0; i<5; i++) {
        [dataArray addObject:[NSNumber numberWithInt:arc4random()%801+1000]];
        [dataArray2 addObject:[NSNumber numberWithInt:arc4random()%601+300]];
    }

    //[graph reloadData];
    [plotLine insertDataAtIndex:[dataArray count]-5 numberOfRecords:5];
    [plotLine2 insertDataAtIndex:[dataArray2 count]-5 numberOfRecords:5];
}

- (NSUInteger) numberOfRecordsForPlot:(CPTPlot *)plot {
    return [dataArray count];
}

- (NSNumber *)numberForPlot:(CPTPlot *)plot field:(NSUInteger)fieldEnum recordIndex:(NSUInteger)idx {
    NSNumber *num;

    if (fieldEnum == CPTScatterPlotFieldY) {
        if ([(NSString *)plot.identifier isEqualToString:@"line1"])
            num = [dataArray objectAtIndex:idx];
        else if ([(NSString *)plot.identifier isEqualToString:@"line2"])
            num = [dataArray2 objectAtIndex:idx];
    }else{
        num = [NSNumber numberWithInt:idx];
    }
    return num;
}
EN

回答 1

Stack Overflow用户

发布于 2014-05-27 00:02:06

您使用什么设备来显示此图表?Mac还是iOS?即使是Retina MacBook Pro在屏幕上的像素也不到3,000,因此您可以做的第一件事就是减少绘制的点数。你也有两个独立的图,这使得所有的事情都需要两倍的时间。

打印的显示格式(线条样式、区域填充、打印符号等)也有很大的不同。简化并消除不需要的元素(将相应的属性设置为nil)。尝试不同的设置并测量结果。

alignsPointsToPixels设置为NO可节省将每个绘图点与像素网格对齐所花费的时间。对于快速变化的数据的实时显示,没有人会注意到。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23871358

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档