CorePlot - 使用两个数组的动态 x 轴数据

CorePlot - dynamic x-axis data using two arrays

这是一个比其他任何话题都更开放的讨论话题。目前,在刷新 CPTPlot *plot 之前,我在 NSMutableArray *voltageArray 中存储了 50 Float32 个值。每次我获得 50 个值时,我从 voltageArray 中删除前 50 个并重复该过程....始终在我的绘图上显示 "real time" 中的 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条,plot的记录条数增加50条(到2500-左右) 10000 范围,然后我会刷新整个过程并重新启动该过程。)

这是正确的方法吗?我怎样才能让前 50 个点留在图表上,同时构建下一个 50 个点等等?想象一个 y = x^2 图形,以及应用积分时图形的样子(整体将曲线下的区域分解为矩形)。

查看 Core Plot 随附的 Plot Gallery 示例应用程序中的 "Real Time Plot" 演示。它从一个空图开始,每个循环添加一个新点,直到达到最大点数。之后,每增加一个新点,旧点就会被移除,因此总数保持不变。该演示使用计时器将随机数据传递给绘图,但您的应用当然可以从任何地方收集数据。请务必始终与主线程中的图表进行交互。

我怀疑您能否在一张图上显示 10,000 个数据点(您的显示器是否有足够的像素来解析这么多点?)。如果没有,如果您过滤 and/or 平滑数据以在将它们发送到绘图之前删除一些点,您将获得更好的绘图性能。