核心绘图 - 填充具有颜色的坐标之间的特定区域

时间:2012-04-03 10:40:46

标签: iphone core-plot

我正在绘制一个图形,其中我想用颜色填充数据线下的区域。但问题是我想对不同的间隔使用不同的颜色。请在提供的链接中考虑以下图表。

Graph Link

上图中的

如何用绿色填充坐标(0,0)和(30,30)之间的区域并用红色填充?

编辑:我能够通过使用两个不同的CPTScatterPlot.One用于绿色区域而其他用于红色来解决我的问题。我添加了以下代码来绘制数据源方法。

-(NSNumber *)numberForPlot:(CPTPlot *)plot field:(NSUInteger)fieldEnum recordIndex:(NSUInteger)index;
{           
        if ([(NSString *)plot.identifier isEqualToString:@"Green"])
        {
            if(index<=30)
            {
        NSString *key = (fieldEnum == CPTScatterPlotFieldX ? @"x" : @"y");
        num = [[plotData objectAtIndex:index] valueForKey:key];

        if ( fieldEnum == CPTScatterPlotFieldY ) {
            num = [NSNumber numberWithDouble:[num doubleValue]];
        }
            }

        }
    else if([(NSString *)plot.identifier isEqualToString:@"Red"])
    {
        if(index>=30)
        {
        NSString *key = (fieldEnum == CPTScatterPlotFieldX ? @"x" : @"y");
        num = [[plotData objectAtIndex:index] valueForKey:key];

        if ( fieldEnum == CPTScatterPlotFieldY ) {
            num = [NSNumber numberWithDouble:[num doubleValue]];
        }
        }
    }                                                       
    return num;
}

1 个答案:

答案 0 :(得分:2)

我能够通过对绿色区域使用两个不同的CPTScatterPlot.One来解决我的问题,而另一个用于红色。我添加了以下代码来绘制数据源方法。

-(NSNumber *)numberForPlot:(CPTPlot *)plot field:(NSUInteger)fieldEnum recordIndex:(NSUInteger)index;
{           
        if ([(NSString *)plot.identifier isEqualToString:@"Green"])
        {
            if(index<=30)
            {
        NSString *key = (fieldEnum == CPTScatterPlotFieldX ? @"x" : @"y");
        num = [[plotData objectAtIndex:index] valueForKey:key];

        if ( fieldEnum == CPTScatterPlotFieldY ) {
            num = [NSNumber numberWithDouble:[num doubleValue]];
        }
            }

        }
    else if([(NSString *)plot.identifier isEqualToString:@"Red"])
    {
        if(index>=30)
        {
        NSString *key = (fieldEnum == CPTScatterPlotFieldX ? @"x" : @"y");
        num = [[plotData objectAtIndex:index] valueForKey:key];

        if ( fieldEnum == CPTScatterPlotFieldY ) {
            num = [NSNumber numberWithDouble:[num doubleValue]];
        }
        }
    }                                                       
    return num;
}