2013-01-16 4 views
2

안녕하세요 저는 그래프를 찾고 있는데 막대 그래프 (막대 그래프 위에 막대 그래프) 위에 산점도를 그릴 수있는 곳은 동일한 그래프에서 선 및 막대 차트를 그릴 수 있습니다 코어 플롯?하나의 그래프 코어 플롯에서 라인 및 막대 차트

나는 다음과 같은 결과를 얻기 위해 노력했지만 성공하지 못했습니다.

CPTGraphHostingView *hostingView = [[CPTGraphHostingView alloc] initWithFrame:CGRectMake(0, 0, width, height)]; 

CPTXYGraph *graph = [[CPTXYGraph alloc] initWithFrame: hostingView.bounds]; 
hostingView.hostedGraph = graph; 


CPTBarPlot *cptBarPlot = [[CPTBarPlot alloc] init]; 
      cptBarPlot.fill = [CPTFill fillWithColor:color]; 
      cptBarPlot.lineStyle = nil; 
      cptBarPlot.identifier = [columnSeries objectForKey:@"id"]; 
      cptBarPlot.name = [columnSeries objectForKey:@"displayName"]; 
      cptBarPlot.plotRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromDouble(BarInitialX) length:CPTDecimalFromDouble(xAxisLength)]; 

      cptBarPlot.barWidth = CPTDecimalFromDouble(BarWidth); 
      cptBarPlot.dataSource = self; 
      //cptBarPlot.opacity = 0.0f; 
      cptBarPlot.delegate = self; 

[graph addPlot:cptBarPlot]; 


CPTXYPlotSpace * secondPlotSpace = [[CPTXYPlotSpace alloc]init]; 
     secondPlotSpace.xRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromDouble(BarInitialX) length:CPTDecimalFromDouble(xAxisLength+1)]; 
     secondPlotSpace.yRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromDouble(0.0) length:CPTDecimalFromFloat(yAxisLength)]; 

     //[graph addPlotSpace:secondPlotSpace]; 

     CPTScatterPlot * linePlot = [[CPTScatterPlot alloc] init]; 

     CPTMutableLineStyle * lineStyle = [CPTMutableLineStyle lineStyle]; 
     lineStyle.lineWidth = 1.f; 
     lineStyle.lineColor = color; 
     lineStyle.dashPattern = [NSArray arrayWithObjects:[NSNumber numberWithFloat:3.0f],nil]; 

     linePlot.dataLineStyle = lineStyle; 
     linePlot.identifier = [lineSeries objectForKey:@"id"]; 
     linePlot.dataSource = self; 
     linePlot.name = [lineSeries objectForKey:@"displayName"]; 

     //linePlot.plotRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromDouble(BarInitialX) length:CPTDecimalFromDouble(xAxisLength)]; 

     [graph addPlot: linePlot]; 

나는 상기 시도에도 즉 [그래프 addPlot : linePlot toPlotSpace는 : secondPlotSpace] differect 플롯 공간에 플롯을 추가하는 시도는 여전히 성공적인 않았다.

나는 뭔가를 놓치고 있다고 생각하지만 couldnt을 찾는다.

미리 도움을 주셔서 감사합니다.

+0

문제의 코드는 괜찮아 보입니다. 그래프가 나타나지만 플롯이 올바르지 않다고 가정하면 데이터 소스 메서드에 문제가있는 것 같습니다. –

답변

0

차트 값을 반환하는 다음 메서드를 구현 했습니까?

-(NSNumber *)numberForPlot:(CPTPlot *)plot field:(NSUInteger)fieldEnum recordIndex:(NSUInteger)index 
{ 
    if ([plot isKindOfClass:[CPTBarPlot class]]) { 
     switch (fieldEnum) { 
      case CPTBarPlotFieldBarLocation: 
       return ...; 
       break; 
      case CPTBarPlotFieldBarTip: 
       return ...; 
       break; 
      case CPTBarPlotFieldBarBase: 
       return ...; 
      default: 
       return 0; 
       break; 
     } 
    } else { 
     switch (fieldEnum) { 
      case CPTScatterPlotFieldX: 
       return ...; 
       break; 
      case CPTScatterPlotFieldY: 
       return ...; 
       break; 
      default: 
       return 0; 
       break; 
     } 

    } 
} 
관련 문제