Please look at this image below. I have attached file. My problem with CPTAxisLabel labels. They are placed under the tick, but they are not placed under the CPTPlot as I want.
How can I add left offset to this labels? I need that my labels will be placed middle the CPTPlot object.

(UPDATED:)
-(void)configureGraph
{
NSInteger max = 0;
for (NSNumber *number in self.values) {
NSInteger num = [number integerValue];
if (num > max) {
max = num;
}
}
CPTGraph *graph = [[CPTXYGraph alloc] initWithFrame:self.bounds];
graph.plotAreaFrame.masksToBorder = NO;
self.hostedGraph = graph;
graph.paddingBottom = 80.0f;
graph.paddingLeft = 0.0f;
graph.paddingTop = 50.0f;
graph.paddingRight = 0.0f;
CGFloat xMin = -0.5f;
CGFloat xMax = [self.titles count];
if (xMax < 7.0) {
xMax = 7.0;
}
CGFloat yMin = 0.0f;
CGFloat yMax = max + 25;
CPTXYPlotSpace *plotSpace = (CPTXYPlotSpace *) graph.defaultPlotSpace;
plotSpace.xRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(xMin) length:CPTDecimalFromFloat(xMax)];
plotSpace.yRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(yMin) length:CPTDecimalFromFloat(yMax)];
//graph.backgroundColor = [[UIColor grayColor] CGColor];
//graph.plotAreaFrame.fill = [CPTFill fillWithColor:[CPTColor redColor]];
}
-(void)configurePlots
{
CPTBarPlot *plot = [[CPTBarPlot alloc] init];
//plot.barOffset = CPTDecimalFromFloat(0.30);
plot.fill = [CPTFill fillWithColor:[CPTColor colorWithComponentRed:190.0f/255.0f green:203.0f/255.0f blue:103.0f/255.0f alpha:1.0]];
//plot.barWidth = CPTDecimalFromDouble(0.75);
plot.lineStyle = nil;
plot.barCornerRadius = 1.0;
plot.dataSource = self;
plot.delegate = self;
CPTGraph *graph = self.hostedGraph;
[graph addPlot:plot toPlotSpace:graph.defaultPlotSpace];
}
#pragma mark - CPTPlotDataSource methods
-(NSUInteger)numberOfRecordsForPlot:(CPTPlot *)plot {
return [self.titles count];
}
-(NSNumber *)numberForPlot:(CPTPlot *)plot field:(NSUInteger)fieldEnum recordIndex:(NSUInteger)index {
if ((fieldEnum == CPTBarPlotFieldBarTip) && (index < [self.titles count])) {
return [self.values objectAtIndex:index];
}
return [NSDecimalNumber numberWithUnsignedInteger:index];
}
-(CPTLayer *)dataLabelForPlot:(CPTPlot *)plot recordIndex:(NSUInteger)idx
{
plot.labelOffset = 0;
CPTMutableTextStyle *style = [CPTMutableTextStyle textStyle];
style.color = [[CPTColor whiteColor] colorWithAlphaComponent:1];
style.fontName = @"Helvetica-Bold";
style.fontSize = 12.0f;
NSString *valueString = [NSString stringWithFormat:@"%@", [self.values objectAtIndex:idx]];
return [[CPTTextLayer alloc] initWithText:valueString style:style];
}
- (void)configureAxes
{
CPTXYAxisSet *axisSet = (CPTXYAxisSet *) self.hostedGraph.axisSet;
axisSet.xAxis.hidden = YES;
axisSet.yAxis.hidden = YES;
CPTMutableTextStyle *style = [CPTMutableTextStyle textStyle];
style.color = [[CPTColor whiteColor] colorWithAlphaComponent:1];
style.fontName = @"Helvetica-Bold";
style.fontSize = 12.0f;
NSMutableArray *labels = [[NSMutableArray alloc] initWithCapacity:5];
int idx =0;
for (NSString *string in self.titles)
{
CPTAxisLabel *label = [[CPTAxisLabel alloc] initWithText:string textStyle:style];
label.rotation = M_PI/2;
label.tickLocation = CPTDecimalFromInt(idx);
label.offset = 10.0f;
[labels addObject:label];
idx+=1;
}
axisSet.xAxis.axisLabels = [NSSet setWithArray:labels];
}
Either set the barOffset to zero (0) and make the bar locations the same as the tick locations or adjust the bar locations returned by the datasource to account for the barOffset.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With