Я использую структуру Core Plot и пытаюсь работать с примерами приложений. Существуют ли учебные пособия для использования этой структуры?
В частности, как вы предоставляете метки для осей X и Y в диаграмме?
Я использую структуру Core Plot и пытаюсь работать с примерами приложений. Существуют ли учебные пособия для использования этой структуры?
В частности, как вы предоставляете метки для осей X и Y в диаграмме?
К сожалению, учитывая тот факт, что API-структура еще не стабилизировалась, там не так много обучающих программ, и некоторые из тех, которые существуют, уже устарели. Примеры приложений действительно являются лучшими источниками, чтобы увидеть, как работать с каркасом.
Например, чтобы предоставить метки пользовательских осей, посмотрите исходный файл CPTestApp-iPhone CPTestAppBarChartController.m
. Гистограмма в этом примере имеет пользовательские метки оси X, определенные следующим кодом:
// Define some custom labels for the data elements
x.labelRotation = M_PI/4;
x.labelingPolicy = CPAxisLabelingPolicyNone;
NSArray *customTickLocations = [NSArray arrayWithObjects:[NSDecimalNumber numberWithInt:1], [NSDecimalNumber numberWithInt:5], [NSDecimalNumber numberWithInt:10], [NSDecimalNumber numberWithInt:15], nil];
NSArray *xAxisLabels = [NSArray arrayWithObjects:@"Label A", @"Label B", @"Label C", @"Label D", @"Label E", nil];
NSUInteger labelLocation = 0;
NSMutableArray *customLabels = [NSMutableArray arrayWithCapacity:[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];
Во-первых, вы устанавливаете политику маркировки оси CPAxisLabelingPolicyNone
, чтобы фреймворк знал, что вы будете предоставлять пользовательские ярлыки, затем вы создаете массив меток с соответствующими местоположениями и, наконец, присваиваете этот массив меток значению axisLabels
на оси X.
Чтобы предоставить пользовательские отформатированные метки, вы можете назначить форматирование свойства labelFormatter оси. Вы можете использовать NSNumberFormatter, настроенный для ваших предпочтений, например:
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
// ... configure formatter
CPTXYAxis *y = axisSet.yAxis;
y.labelFormatter = formatter;
Или, если вам нужно более точное форматирование, вы можете подклассом NSNumberFormatter
и переопределить метод stringForObjectValue:
, чтобы сделать точный форматирование, которое вы хотели бы.