[英]Can't implement changing of the bar colour in 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;
但是我找不到適合自己目的的良好代碼。 有什么幫助嗎?
我發布了已解決問題的代碼。 感謝你的支持。
- (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]];
}
你試過了嗎,行得通嗎?
CPTGradient *barGradient = [CPTGradient gradientWithBeginningColor:[CPTColor blueColor] endingColor:[CPTColor blackColor]];
self.barPlot.fill = [CPTFill fillWithGradient:barGradient];
您可以像在第一個代碼示例中那樣計算RGB值的方式創建顏色。 要將值映射到顏色,您可以例如將紅色設置為0,將藍色設置為255,然后將綠色從0深藍色更改為255淺藍色。 這不是最佳解決方案,最好還是根據您的值更改藍色值。 您可能需要很好地使用OS X的顏色,然后使用RGB滑塊嘗試一下。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.