无法在Core Plot条形图中实现条形颜色的更改

时间:2014-01-31 05:52:36

标签: ios objective-c core-plot bar-chart

我有一个简单的条形图,有12个条形图。为此,我使用Core Plot。我需要实现一种方法,根据它们的值将条形颜色设置为浅蓝色,最小值为深蓝色。

现在我用一种颜色着色所有的条纹:

self.barPlot.fill = [CPTFill fillWithColor:[CPTColor colorWithComponentRed:100.0f / 255.0f green:192.0f / 255.0f blue:245.0f / 255.0f alpha:1.0f]];

我知道可以为每个条设置颜色的方法:

-(CPTFill *)barFillForBarPlot:(CPTBarPlot *)barPlot recordIndex:(NSUInteger)idx;

但是我找不到适合我目的的好代码。有什么帮助吗?

3 个答案:

答案 0 :(得分:1)

我发布已解决问题的代码。谢谢你的支持。

    - (CPTFill *) barFillForBarPlot:(CPTBarPlot *)barPlot recordIndex:(NSUInteger)index
{
    CGFloat minValue = [[[[[PlotDataStore sharedInstance] docsCount] valueForKey:@"docs"] valueForKeyPath:@"@min.self"] floatValue];
    CGFloat maxValue = [[[[[PlotDataStore sharedInstance] docsCount] valueForKey:@"docs"] valueForKeyPath:@"@max.self"] floatValue];
    CGFloat value = [[[[[PlotDataStore sharedInstance] docsCount] valueForKey:@"docs"] objectAtIndex:index] floatValue];
    CGFloat resultHue = (value * 0.6f / (maxValue - minValue)) + 0.4f;

    return [CPTFill fillWithColor:[CPTColor colorWithCGColor:[UIColor colorWithHue:0.561f saturation:resultHue brightness:1.0f alpha:1.0f].CGColor]];
}

答案 1 :(得分:0)

你试过这个吗,它有用吗?

CPTGradient *barGradient = [CPTGradient gradientWithBeginningColor:[CPTColor blueColor] endingColor:[CPTColor blackColor]];
self.barPlot.fill = [CPTFill fillWithGradient:barGradient];

答案 2 :(得分:0)

您可以使用RGB值创建颜色,就像在第一个代码示例中计算填充一样。要将值映射到颜色,您可以将红色设置为0,蓝色设置为255,然后将绿色从0深蓝色变为255浅蓝色。这不是最好的解决方案,更好的方法是根据您的值更改蓝色值。您可能希望使用OS X颜色,并尝试使用RGB滑块。