我正在使用 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:
方法来执行您想要的确切格式。