2016-03-09 3 views
0

Я пытаюсь создать штабелированную гистограмму с разными цветами для каждого бара. Он отлично работает, если я предоставляю только два цвета в BarChartDataSet, или если у меня есть обычная гистограмма с цветом для каждого бара. Однако мне интересно, как я могу предоставить два цвета для каждого BarChartDataEntry в наборе данных?iOS-диаграммы сложены гистограммы с несколькими цветами

+0

как вы закончили подклассификацию 'BarChartRenderer'? ... Я пытаюсь сделать то же самое, но я не знаю, что передать в параметр' drawValues ​​(контекст: CGContext) 'for' context' – Pangu

ответ

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

+0

Извините, мой вопрос был недостаточно ясен, я имел в виду наличие штабелированной диаграммы, в которой каждый бар имеет разные цвета. Пример работает отлично, если я хочу, чтобы все бары имели одинаковые три цвета, но это не так. – Georgi

+0

Я обновил свой ответ. Если вы хотите, чтобы у каждого бара был другой цвет, тогда вам нужно использовать несколько наборов данных и, возможно, отрегулировать 'barSpace' и' groupSpace' – Wingzero

+0

. С двумя наборами данных в итоге я имею полосы, которые занимают половину пространства обычного бара (что потому что у меня есть два набора данных, и только один дает значение для данного индекса), но как я могу настроить переменные 'barSpace' и' groupSpace', чтобы каждый бар занимал всю ширину полосы? Я знаю, что у меня никогда не будет двух баров для одного и того же индекса. – Georgi

Смежные вопросы