核心图中的多个函数曲线

时间:2015-01-15 05:40:58

标签: objective-c core-plot

我目前正在尝试添加多条数学函数曲线。以下是我的代码的一部分。

// draw all expression curves (in viewDidLoad)
for ( j=0; j<self.expNum; j++ ) {

        [self getDataForPlot1:self.plotIndex]; // get DataForPlot of one selected expression
        [self addCurve:self.plotIndex];
}

我试图在绘制轴后添加所有曲线,但它只是绘制的最后一条输入曲线。如何为每个函数分隔dataForPlot

-(void)getDataForPlot1:(int)index
{
    int i;
    NSString *exp;

    int bound, plotNum;
    double interval;

    bound = 3 * scaleX;
    plotNum = 3 * 60;
    interval = (double)bound / plotNum;

    NSMutableArray *contentArray = [NSMutableArray arrayWithCapacity:2*plotNum];

    for ( i = -plotNum; i < plotNum; i++ ) {
        id x;

        x = [NSNumber numberWithFloat: i * interval];

        // get one expression
            .......

        id y = [exp numberByEvaluatingString]; // get y values from the expression
        [contentArray addObject:[NSMutableDictionary dictionaryWithObjectsAndKeys:x, @"x", y, @"y", nil]];
    }
    dataForPlot = contentArray;

}


-(void)addCurve:(int)index {

    CPTScatterPlot *boundLinePlot  = [[CPTScatterPlot alloc] init];
    CPTMutableLineStyle *lineStyle = [CPTMutableLineStyle lineStyle];
    lineStyle.miterLimit        = 1.0f;
    lineStyle.lineWidth         = 3.0f;
    lineStyle.lineColor         = [CPTColor blueColor];
    boundLinePlot.dataLineStyle = lineStyle;
    boundLinePlot.identifier    = @"Blue Plot";
    boundLinePlot.dataSource    = self;

    [graph addPlot:boundLinePlot toPlotSpace:plotSpace];

    boundLinePlot.interpolation = CPTScatterPlotInterpolationCurved;
}

1 个答案:

答案 0 :(得分:0)

(根据上述评论回答问题)

分别保存每个数据集的副本。每次调用-getDataForPlot1:时,看起来计算的绘图数据都会被覆盖。

另外,为每个绘图设置一个唯一的identifier,以便数据源可以知道哪一个请求数据。