Как отобразить значения подсказок для каждого графика в многослойной панели, созданной Core-plot? - PullRequest
0 голосов
/ 02 ноября 2011

Мне нужна помощь с этим, пожалуйста, помогите мне.Вот моя ситуация:

This is what I have now

Это то, что у меня сейчас.Красный график имеет значение 190. А желтый график имеет значение 63,3.Я хочу построить красный над желтым.Это означает, что желтый график имеет baseValue = 0, а красный график имеет baseValue = значение наконечника желтого цвета.Я использовал CPTBarPlotFieldBarBase, чтобы изменить baseValue красного графика (set barBaseValue = Yes).Как я и ожидал, общая стоимость обоих участков по этому показателю = 190 + 63,3 = 253,3.К сожалению, итоговое значение составляет всего 190, что является значением только красного графика.

Таким образом, у меня вопрос, как я могу по-прежнему отображать значения графика графиков в этом формате, но общая высота 2 графиков по этому индексу должна быть 253,3 (мне не нужно отображать это число).Я просто хочу, чтобы высота графика выглядела так, как показано на рисунке

enter image description here

Этот график имеет общее значение 97, что немного ниже 100.

Пожалуйста, помогите мне.Я ценю помощь.

Ответы [ 2 ]

2 голосов
/ 02 ноября 2011

Core Plot не выполняет вычисления стека за вас. Установите значение наконечника для красной полосы 253,3 (190 + 63,3).

1 голос
/ 04 ноября 2011

Хорошо, просто хочу поделиться.Как указал Эрик «Сделайте верхушку красной полосе 253,3 (190 + 63,3)», но он не упомянул, как.Вот как я это сделал.Сначала нарисуйте красную полосу со значением, равным 2 значениям (красный + желтый).Затем нарисуйте желтую полосу, перекрывающую красную, и она имеет то же самое базовое значение, что и красная диаграмма.Вот хитрость, когда я маркирую красный график, я использовал его фактическое значение, которое не является общим значением.А вот функция, которую я использовал для изменения меток.

-(CPTLayer *)dataLabelForPlot:(CPTPlot *)plot recordIndex:(NSUInteger)index {
CPTTextLayer *label;
if (red_plot.identifier){
    label = [[CPTTextLayer alloc] initWithText:[NSString stringWithFormat:@"%@", [_charDataOfRed objectAtIndex:index]]]; 
}
else{
    label = [[CPTTextLayer alloc] initWithText:[NSString stringWithFormat:@"%@", [_charDataOfYellow objectAtIndex:index]]]; 
}
CPTMutableTextStyle *textStyle = [label.textStyle mutableCopy];
textStyle.color = [CPTColor redColor];
label.textStyle = textStyle;
[textStyle release];
return [label autorelease];

Надеюсь, это поможет!

...