我有一个简单的条形图,有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;
但是我找不到适合我目的的好代码。有什么帮助吗?
答案 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滑块。