2010-01-03 67 views
3

我对Core Plot完全不熟悉,并且有一个工作条形图,但对我来说,视觉对我来说是无用的,除非我知道每个条中表示哪个对象。我看到有一种叫做'fieldIdentifiers'的方法,但不知道如何实现它,我也找不到任何文档(如果这甚至是正确的方法)。你能引导我走向正确的方向吗?谢谢!如何将标签添加到CPBarPlot条形图?

回答

9

为了在Core Plot图表中手动设置轴的标签,您需要将该轴的labelsPolicy设置为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)在X轴上的位置1,5,10,15和20处。

+0

你是我的英雄。我能够把你写的内容合并到我的代码中,制作美味的label-y图表。你有没有使用新功能来设置在酒吧的提示标签?它在Mac的CPTestApp中,但它对我来说是不透明的。 – lelander 2010-01-05 18:52:58

+0

德鲁刚刚补充说,前几天,我不能完全弄清楚它是如何工作的。它与-barLabelForBarPlot:recordIndex:delegate方法有关,但我无法在我的代码中复制效果。 – 2010-01-05 19:28:21

+0

嗨,如果您手动为轴设置标签,当棒图的值发生变化时,轴标签的位置会受到干扰如何解决此问题? – ravoorinandan 2011-03-29 11:30:01

相关问题