CorePlot - 使用两个数组

时间:2017-02-13 20:07:47

标签: dynamic plot nsmutablearray core-plot axis-labels

这是一个比其他任何事情更开放的讨论主题。目前,在刷新Float32之前,我正在NSMutableArray *voltageArray中存储50个CPTPlot *plot值。每次我获得50个值时,我会从voltageArray中移除前50个并重复该过程....始终在我的绘图中以“实时”显示50个值。

然而,我收到的数据(来自配备压力传感器的赛普拉斯BLE模块的电压)如此之快,以至于无法看到任何变化(0.4 V至4.0 V;无压力压力)在我的图表上。它只是显示为一条直线,上下变化而没有显示增加或减少的斜率。

要显示整体更改,我想获取这50个值,将它们存储在另一个NSMutableArray *stampArray的第一个索引中,并使用stampArray索引显示信息。同时,numberOfRecordsForPlot:方法如下所示:

- (NSUInteger)numberOfRecordsForPlot:(CPTPlot *)plotnumberOfRecords {
    return (DATA_PER_STAMP * _stampCount);
}

这最初是50,然后在从BLE模块捕获50个数据之后,_stampCount将增加1,并且绘图的记录数将增加50(直到大约2500-10000范围) ,然后我刷新整个事情并重新启动过程。)

这是正确的做法吗?如何在图表中保留前50个点,同时构建下一个50点等等?想象一下y = x^2图形,以及应用积分时图形的样子(将曲线下的区域整体划分为矩形)。

1 个答案:

答案 0 :(得分:0)

查看"实时情节" Core Plot附带的 Plot Gallery 示例应用程序中的演示。它以空图开始,每个周期添加一个新点,直到达到最大点数。之后,为每个添加的新点删除一个旧点,使总数保持不变。该演示使用计时器将随机数据传递到绘图,但您的应用程序当然可以从任何地方收集数据。务必始终与主线程中的图形进行交互。

我怀疑你能否在一个地块上显示10,000个数据点(你的显示器是否有足够的像素来解决那么多点?)。如果没有,如果您在将数据发送到绘图之前过滤和/或平滑数据以删除某些点,您将获得更好的绘图性能。