Как добавить метки к гистограммам CPBarPlot?

Я совершенно новичок в Core Plot, и у меня есть работающая гистограмма, но визуальное представление для меня бесполезно, если я не знаю, какой объект представлен на каждой гистограмме. Я видел, что есть метод под названием «fieldIdentifiers», но не знаю, как его реализовать, и не могу найти никакой документации (если это даже правильный метод). Можете ли вы направить меня в правильном направлении? Спасибо!


person lelander    schedule 03.01.2010    source источник


Ответы (1)


Чтобы вручную установить метки для оси на диаграмме Core Plot, вам необходимо установить для labelingPolicy этой оси значение CPAxisLabelingPolicyNone и указать метки самостоятельно. Например, следующий код установит пользовательские метки на гистограмме (взято из кода, который я когда-нибудь добавлю в пример приложения для iPhone):

CPXYAxisSet *axisSet = (CPXYAxisSet *)barChart.axisSet;
CPXYAxis *x = axisSet.xAxis;
x.labelRotation = M_PI/4;
x.labelingPolicy = CPAxisLabelingPolicyNone;
NSArray *customTickLocations = [NSArray arrayWithObjects:[NSDecimalNumber numberWithInt:1], [NSDecimalNumber numberWithInt:5], [NSDecimalNumber numberWithInt:10], [NSDecimalNumber numberWithInt:15], [NSDecimalNumber numberWithInt:20], nil];
NSArray *xAxisLabels = [NSArray arrayWithObjects:@"Label A", @"Label B", @"Label C", @"Label D", @"Label E", nil];
NSUInteger labelLocation = 0;
NSMutableArray *customLabels = [[NSMutableArray alloc] initWithCapacity:[xAxisLabels count]];
for (NSNumber *tickLocation in customTickLocations)
{
    CPAxisLabel *newLabel = [[CPAxisLabel alloc] initWithText: [xAxisLabels objectAtIndex:labelLocation++] textStyle:x.labelTextStyle];
    newLabel.tickLocation = [tickLocation decimalValue];
    newLabel.offset = x.labelOffset + x.majorTickLength;
    newLabel.rotation = M_PI/4;
    [customLabels addObject:newLabel];
    [newLabel release];
}

x.axisLabels =  [NSSet setWithArray:customLabels];

Это устанавливает пять пользовательских меток (метка A, B, C, D и E) в местах 1, 5, 10, 15 и 20 по оси X.

person Brad Larson    schedule 04.01.2010
comment
Ты мой герой. Я смог взять то, что вы написали, и объединить это со своим кодом для восхитительной диаграммы с метками. Вы играли с новой функцией, чтобы установить метки на кончиках полос? Он есть в CPTestApp для Mac, но для меня он непонятен. - person lelander; 05.01.2010
comment
Дрю только что добавил это несколько дней назад, и я не могу понять, как это работает. Это как-то связано с методом делегата -barLabelForBarPlot:recordIndex:, но я не могу воспроизвести эффект в своем коде. - person Brad Larson; 05.01.2010
comment
привет, если вы вручную устанавливаете метки для оси, когда значения гистограмм меняются, положение меток оси нарушается, как решить эту проблему? - person ravoorinandan; 29.03.2011