核心情节数据源 - 问题

时间:2013-04-28 22:44:58

标签: datasource core-plot

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

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

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];

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

1 个答案:

答案 0 :(得分:1)

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

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

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