【问题标题】:Core Plot- Filling Particular Area between a coordinates with color核心图-用颜色填充坐标之间的特定区域
【发布时间】:2012-04-03 10:40:45
【问题描述】:

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

Graph Link

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

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

-(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;
}

【问题讨论】:

  • 我认为这可以通过情节阴影来实现,请在代码中搜索更多内容,您一定会得到方法,否则我会提供帮助。
  • 你能用颜色填充图表下方的区域吗?
  • @tipycalFlow 是的,我能够填写它。
  • @user1249508 如果您能够解决问题,请将其作为答案发布并接受它

标签: iphone core-plot


【解决方案1】:

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

-(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;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多