我正在尝试为每个条形创建一个具有不同颜色的堆积条形图。如果我在BarChartDataSet
中只提供两种颜色,或者如果我有一个普通的条形图,每个条形图都有颜色,那么它可以正常工作。但是我想知道如何为数据集中的每个BarChartDataEntry
提供两种颜色?
答案 0 :(得分:1)
看看ChartsDemo的堆积条形图视图控制器: 只需将颜色提供给BarChartDataSet.colors
for (int i = 0; i < count; i++)
{
double mult = (range + 1);
double val1 = (double) (arc4random_uniform(mult) + mult / 3);
double val2 = (double) (arc4random_uniform(mult) + mult / 3);
double val3 = (double) (arc4random_uniform(mult) + mult / 3);
[yVals addObject:[[BarChartDataEntry alloc] initWithValues:@[@(val1), @(val2), @(val3)] xIndex:i]];
}
BarChartDataSet *set1 = [[BarChartDataSet alloc] initWithYVals:yVals label:@"Statistics Vienna 2014"];
set1.colors = @[ChartColorTemplates.vordiplom[0], ChartColorTemplates.vordiplom[1], ChartColorTemplates.vordiplom[2]];
set1.stackLabels = @[@"Births", @"Divorces", @"Marriages"];
在条形图渲染器中,它使用此颜色数组来填充每个段
// Set the color for the currently drawn value. If the index is out of bounds, reuse colors.
CGContextSetFillColorWithColor(context, dataSet.colorAt(k).CGColor)
如果您希望每个条形图有不同的颜色,那么您必须使用多个数据集,并可能会调整barSpace
和groupSpace