Как добавить метки к гистограммам CPBarPlot?
Вопрос
Я совершенно новичок в Core Plot, и у меня есть рабочая гистограмма, но визуальный элемент для меня бесполезен, если я не знаю, какой объект представлен на каждой полосе.Я видел, что существует метод под названием «fieldIdentifiers», но не знаю, как его реализовать, и не могу найти никакой документации (если это даже правильный метод).Можете ли вы направить меня в правильном направлении?Спасибо!
Решение
Чтобы вручную установить метки для оси на диаграмме основного графика, вам необходимо установить для параметра 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.