簡體   English   中英

無法在核心圖條形圖中實現條形的更改

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM