Я совершенно новичок в Core Plot, и у меня есть работающая гистограмма, но визуальное представление для меня бесполезно, если я не знаю, какой объект представлен на каждой гистограмме. Я видел, что есть метод под названием «fieldIdentifiers», но не знаю, как его реализовать, и не могу найти никакой документации (если это даже правильный метод). Можете ли вы направить меня в правильном направлении? Спасибо!
Как добавить метки к гистограммам CPBarPlot?
Ответы (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
Ты мой герой. Я смог взять то, что вы написали, и объединить это со своим кодом для восхитительной диаграммы с метками. Вы играли с новой функцией, чтобы установить метки на кончиках полос? Он есть в CPTestApp для Mac, но для меня он непонятен.
- person lelander; 05.01.2010
Дрю только что добавил это несколько дней назад, и я не могу понять, как это работает. Это как-то связано с методом делегата -barLabelForBarPlot:recordIndex:, но я не могу воспроизвести эффект в своем коде.
- person Brad Larson; 05.01.2010
привет, если вы вручную устанавливаете метки для оси, когда значения гистограмм меняются, положение меток оси нарушается, как решить эту проблему?
- person ravoorinandan; 29.03.2011