2011-04-07 141 views
3

嘿, 最近使用CorePlot,但問題是,我設置的標籤沒有出現,我能看到的一個是主要和次要的TickLine,但也僅在x-線不在下面。CorePlot XAxis標籤不顯示

這裏是我的代碼:

subViewGraph=[[CPGraphHostingView alloc]init]; 

subViewGraph.frame=CGRectMake(0, 40, 320, 280); 
    subViewGraph.bounds=CGRectMake(0, 40, 320,280); 
[self.view addSubview:subViewGraph]; 

graph = [[CPXYGraph alloc] initWithFrame:subViewGraph.bounds]; 

CPTheme *theme = [CPTheme themeNamed:kCPPlainWhiteTheme]; 
[graph applyTheme:theme]; 
subViewGraph.hostedGraph=graph; 
graph.paddingBottom=40; 

// Define some custom labels for the data elements 
CPXYAxisSet *axisSet = (CPXYAxisSet *)graph.axisSet; 
CPXYAxis *x=axisSet.xAxis; 

CPLineStyle *lineStyle = [CPLineStyle lineStyle]; 
lineStyle.lineColor = [CPColor redColor]; 
lineStyle.lineWidth = 2.0f; 
x.majorIntervalLength = [[NSDecimalNumber decimalNumberWithString:@"2"]decimalValue]; 
x.minorTicksPerInterval = 4; 
x.majorTickLineStyle = lineStyle; 
x.minorTickLineStyle = lineStyle; 
x.axisLineStyle = lineStyle; 
x.minorTickLength = 5.0f; 
x.majorTickLength = 10.0f; 
x.labelOffset=3.0; 
x.labelRotation = M_PI/4; 
x.labelTextStyle.color=[CPColor blueColor]; 

NSArray *customTickLocations = [NSArray arrayWithObjects:[NSDecimalNumber numberWithInt:0], 
           [NSDecimalNumber numberWithInt:2], 
           [NSDecimalNumber numberWithInt:4], 
           [NSDecimalNumber numberWithInt:6], 
           nil]; 
NSArray *xAxisLabels = [NSArray arrayWithObjects:@"Label A", @"Label B", @"Label C", @"Label D", nil]; 
NSUInteger labelLocation = 0; 
NSMutableArray *customLabels = [NSMutableArray arrayWithCapacity:[xAxisLabels count]]; 
for (NSNumber *tickLocation in customTickLocations) { 
    CPAxisLabel *newLabel = [[CPAxisLabel alloc] initWithText: [xAxisLabels objectAtIndex:labelLocation++] textStyle:axisSet.xAxis.labelTextStyle]; 
    newLabel.tickLocation = [tickLocation decimalValue]; 
    [customLabels addObject:newLabel]; 
    [newLabel release]; 
} 

axisSet.xAxis.axisLabels = [NSSet setWithArray:customLabels]; 
[email protected]"Hello"; 

// Define the space for the bars. 
CPXYPlotSpace *plotSpace = (CPXYPlotSpace *)graph.defaultPlotSpace; 
plotSpace.yRange = [CPPlotRange plotRangeWithLocation:CPDecimalFromFloat(0.0f) length:CPDecimalFromFloat(150.0f)]; 
plotSpace.xRange = [CPPlotRange plotRangeWithLocation:CPDecimalFromFloat(0.0f) length:CPDecimalFromFloat(12.0f)]; 


// Bar plot 
CPBarPlot *barPlot = [CPBarPlot tubularBarPlotWithColor:[CPColor yellowColor] horizontalBars:NO]; 
barPlot.dataSource = self; 
barPlot.baseValue = CPDecimalFromString(@"0"); 
barPlot.barOffset = 1.0f; 
barPlot.barWidth = 20.0f; 
barPlot.identifier = @"BlueBarPlot"; 

[graph addPlot:barPlot toPlotSpace:plotSpace]; 

在此先感謝。

回答

15

嘿,夥計們確實發現它自己,你必須添加一些不同的填充:

graph.plotAreaFrame.paddingBottom=40; 

現在我的x軸是可見的。

+0

感謝張貼自己的答案!我遇到了同樣的問題。 – onnoweb 2011-04-08 17:05:05

-1

...或者乾脆:

barChartView = [[CPTGraphHostingView alloc] initWithFrame:self.view.bounds]; 
barChartView.autoresizingMask = (UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight);