0

我有一个优化核心绘图的问题,如果我想绘制函数 y=8*sin(x) 我使用解析并在计算后得到一个范围的值(例如 -5,+5)我绘制图表。如果我向上或向下拖动绘图,则会覆盖一些值,因此它们是不必要的,我可以将其删除,然后在可见范围内添加一些点以获得更好的线条。

现在我有一个更多间隔的数据源,3 个数组,这个间隔的 y 值:-5,-2 0,3 之一和 4,5 之一(例如这个数字)。如何在我的绘图视图上绘制这条线,我需要添加一些这样的代码:

CPTScatterPlot *xSquaredPlot = [[CPTScatterPlot alloc] initWithFrame:graph.defaultPlotSpace.accessibilityFrame];
xSquaredPlot.identifier = @"Grafico";
xSquaredPlot.interpolation = CPTScatterPlotInterpolationLinear;
xSquaredPlot.delegate = self;

CPTMutableLineStyle *lineStyleFunc = [CPTMutableLineStyle lineStyle];
lineStyleFunc.lineWidth = 1.0f;
lineStyleFunc.lineColor = [CPTColor redColor];
xSquaredPlot.dataLineStyle = lineStyleFunc;
xSquaredPlot.dataSource = self;

[graph addPlot:xSquaredPlot];

但问题是我不知道我有多行,我需要动态创建它,我该怎么做?当我创建新间隔的数组时添加此代码?但是当我需要更新数据源时?

4

1 回答 1

1

Core Plot 将尽可能跳过可见绘图区域之外的绘图点,因此您不必太担心在数据源中执行此操作。您不希望在用户滚动时添加和删除大量数据点 - 这只会导致绘图代码的更多工作并减慢它的速度。

由于您正在绘制一个函数,您可以做的一件事就是只在一个相当小的范围内生成数据点,比如说稍微超出可见的 x 范围。当用户滚动或缩放图形时,使用绘图空间委托来监视更改并根据需要添加点。

使用-insertDataAtIndex:numberOfRecords:方法将数据点添加到绘图中。这将比-reloadData强制绘图加载其所有数据(而不仅仅是新值)具有更好的性能。

于 2013-04-28T23:28:51.163 回答