I use graphical diagrams of Core Plot to calculate the growth rate of the company. I would like the company stock symbols to be marked on an axis centered below their respective bars. Unfortunately, I spent many hours finding a way to correctly set x-tags, but did not manage to use my code. How can the x-axis labels be directed correctly?
My chart setup is as follows:
CPTBarPlot *barPlot = [CPTBarPlot tubularBarPlotWithColor:[CPTColor blueColor] horizontalBars:NO]; barPlot.baseValue = CPTDecimalFromInt(0); barPlot.barOffset = CPTDecimalFromFloat(0.5f); barPlot.barWidth = CPTDecimalFromFloat(0.5f); double xAxisStart = 0; double xAxisLength = self.companies.count; double yAxisStart = 0; double yAxisLength = 0.5; CPTXYPlotSpace *plotSpace = (CPTXYPlotSpace *)graph.defaultPlotSpace; plotSpace.xRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromDouble(xAxisStart) length:CPTDecimalFromDouble(xAxisLength + 1.0)] ; plotSpace.yRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromDouble(yAxisStart) length:CPTDecimalFromDouble(yAxisLength)] ; barPlot.plotRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromDouble(+0.0) length:CPTDecimalFromDouble(xAxisLength)] ;
In the following code snippet, I tried using custom shortcuts, but to no avail, as the sample diagram below shows.
xAxis.labelingPolicy = CPTAxisLabelingPolicyNone; NSMutableArray *customLabels = [[NSMutableArray alloc]init]; [self.companies enumerateObjectsUsingBlock:^(IBCompany *company, NSUInteger idx, BOOL *stop) { NSString *labelText = company.contrSymbol; CPTAxisLabel *label = [[CPTAxisLabel alloc] initWithText:labelText textStyle:xAxis.labelTextStyle]; label.tickLocation = CPTDecimalFromDouble(idx + 0.5); label.offset = xAxis.labelOffset + xAxis.majorTickLength; label.rotation = M_PI * 2; [customLabels addObject:label]; }]; xAxis.axisLabels = [NSSet setWithArray:customLabels];

Please note that my bar chart index starts at 1 :
-(NSArray *)numbersForPlot:(CPTPlot *)plot field:(NSUInteger)fieldEnum recordIndexRange:(NSRange)indexRange { if ( [plot.identifier isEqual:plotIdentifier] ) {; if ( fieldEnum == CPTScatterPlotFieldX ) { NSMutableArray *indexArray = [[NSMutableArray alloc] init]; [self.companies enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) { [indexArray addObject:[NSDecimalNumber numberWithInt: idx + 1]]; }]; return [indexArray copy]; } else if ( fieldEnum == CPTScatterPlotFieldY ) {
}
source share