开发者

iPhone Core-Plot Tick Marks Not Showing

I went through the tutorial here: http://www.switchonthecode.com/tutorials/using-core-plot-in-an-iphone-application, and I can get a graph to show, but I don't see any tick marks or labels on my axis set. Is there something simple I'm overlooking? Below is my code to create the graph, and I also implemented the delegate functions. I am seeing the axis and the plot, but not axis tick marks or labels.

Thanks for any help you can give.开发者_开发技巧

- (void) showGraph {

  graph = [[CPXYGraph alloc] initWithFrame: CGRectMake(0,0, 320, 320)];

  CPLayerHostingView *graphView = [[CPLayerHostingView alloc] initWithFrame:CGRectMake(0,0, 320, 320)];
  graphView.backgroundColor = [UIColor blueColor];

  AppDelegate *t = (AppDelegate *)[[UIApplication sharedApplication] delegate];
  [t.mapVC.view addSubview:graphView];

  graphView.hostedLayer = graph;
  graph.paddingLeft = 20.0;
  graph.paddingTop = 20.0;
  graph.paddingRight = 20.0;
  graph.paddingBottom = 20.0;

  float minElevation = 0;
  float maxElevation = 10;
  float minTime = 0;
  float maxTime = 5;

  CPXYPlotSpace *plotSpace = (CPXYPlotSpace *)graph.defaultPlotSpace;
  plotSpace.xRange = [CPPlotRange plotRangeWithLocation:CPDecimalFromFloat(minTime)
                                                 length:CPDecimalFromFloat(maxTime)];
  plotSpace.yRange = [CPPlotRange plotRangeWithLocation:CPDecimalFromFloat(minElevation)
                                                 length:CPDecimalFromFloat(maxElevation)];

  CPXYAxisSet *axisSet = (CPXYAxisSet *)graph.axisSet;

  CPLineStyle *blackStyle = [CPLineStyle lineStyle];
  blackStyle.lineColor = [CPColor blackColor];
  blackStyle.lineWidth = 5.0f;
  CPLineStyle *whiteStyle = [CPLineStyle lineStyle];
  whiteStyle.lineColor = [CPColor whiteColor];
  whiteStyle.lineWidth = 5.0f;

  axisSet.xAxis.majorIntervalLength = [[NSDecimalNumber decimalNumberWithString:@"5"]decimalValue];

  axisSet.xAxis.minorTicksPerInterval = 4;
  axisSet.xAxis.majorTickLineStyle = whiteStyle;
  axisSet.xAxis.minorTickLineStyle = whiteStyle;
  axisSet.xAxis.axisLineStyle = blackStyle;
  axisSet.xAxis.minorTickLength = 5.0f;
  axisSet.xAxis.majorTickLength = 10.0f;
  axisSet.xAxis.labelOffset = 3.0f;

  axisSet.yAxis.majorIntervalLength = [[NSDecimalNumber decimalNumberWithString:@"5"]decimalValue];
  axisSet.yAxis.minorTicksPerInterval = 4;
  axisSet.yAxis.majorTickLineStyle = blackStyle;
  axisSet.yAxis.minorTickLineStyle = blackStyle;
  axisSet.yAxis.axisLineStyle = whiteStyle;
  axisSet.yAxis.minorTickLength = 5.0f;
  axisSet.yAxis.majorTickLength = 10.0f;
  axisSet.yAxis.labelOffset = 3.0f;

  CPScatterPlot *xSquaredPlot = [[[CPScatterPlot alloc]
                                  initWithFrame:graph.bounds] autorelease];
  xSquaredPlot.identifier = @"X Squared Plot";
  xSquaredPlot.dataLineStyle.lineWidth = 2.0f;
  xSquaredPlot.dataLineStyle.lineColor = [CPColor greenColor];
  xSquaredPlot.dataSource = self;
  [graph addPlot:xSquaredPlot];

  CPPlotSymbol *greenCirclePlotSymbol = [CPPlotSymbol ellipsePlotSymbol];
  greenCirclePlotSymbol.fill = [CPFill fillWithColor:[CPColor greenColor]];
  greenCirclePlotSymbol.size = CGSizeMake(2.0, 2.0);

  xSquaredPlot.plotSymbol = greenCirclePlotSymbol;  
}


You need some space around the outside of the axes. Core Plot doesn't yet do this for you automatically.

Try adding some padding to graph.plotArea.plotGroup and graph.plotArea.axisSet. See the bar plot in the iPhone test app for an example.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜