【问题标题】:core plot datasource - issue核心情节数据源 - 问题
【发布时间】:2013-04-28 22:44:57
【问题描述】:

我有一个优化核心绘图的问题,如果我想绘制函数 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];

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

【问题讨论】:

    标签: datasource core-plot


    【解决方案1】:

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

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

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

    【讨论】:

    • 真的吗?我试图检查,但我看到平移点被绘制,可能我在绘制图形时犯了一些错误,我制作了 X 和 Y 数组,所以在 -numberOfRecordsForPlot 中:我在 numberForPlot:field:recordIndex 中返回数组计数:我为 FieldX 和 FieldY 返回 X 或 Y 数组值,对吗?
    • 如果我尝试使用此方法,我会收到此错误:由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因:“无效参数不满足:idx
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-20
    • 2011-07-03
    相关资源
    最近更新 更多