2012-06-16 3 views
0

CorePlot 프레임 워크를 사용하여 데이터를 플로팅 할 때 문제가 있습니다. 나는 integrated it 아래에 내가 일하고있는 프로젝트에서 내 코드의 샘플이있다 : live scatter 차트.문제 있음 데이터가 동일한 데이터가있는 경우 그래프를 플롯하지 않음

데이터 소스의 값이 같으면 그래프가 플롯되지 않습니다.

플로팅 포인트 코드입니다 : appDelegate.arrayLiveValues 배열 한 후 플로팅 아니에요 중복 값을 포함

#pragma mark - CPTPlotDataSource methods 
-(NSUInteger)numberOfRecordsForPlot:(CPTPlot *)plot { 
    return [appDelegate.arrayLiveValues count]; 
} 

-(NSNumber *)numberForPlot:(CPTPlot *)plot field:(NSUInteger)fieldEnum 
             recordIndex:(NSUInteger)index 
{ 
    NSInteger valueCount = [appDelegate.arrayLiveValues count]; 
    switch (fieldEnum) { 
     case CPTScatterPlotFieldX: 
      if (index < valueCount) { 
       return [NSNumber numberWithUnsignedInteger:index]; 
      } 
      break; 

     case CPTScatterPlotFieldY: 
      return [appDelegate.arrayLiveValues objectAtIndex:index]; 
      break; 
    } 
    return [NSDecimalNumber zero]; 
} 

합니다. 값이 다른 경우 그래프에 그려지는 값이 datasource입니다 (예 : appDelegate.arrayLiveValues). 그래프 확대/축소 수준이 설정됩니다. 나는

-(NSNumber *)numberForPlot:(CPTPlot *)plot field:(NSUInteger)fieldEnum recordIndex:(NSUInteger)index method; 
+0

'arrayLiveValues'가 숫자 배열 인 것으로 가정하면 정상적으로 보입니다. 플롯 공간을 어떻게 확장하고 있습니까? –

+0

배열에 각각의 모든 객체와 동일한 번호가 포함되어있는 경우 그 다음 플로팅하지 않습니다. 다음과 같은 방법으로 그것의 규모를 설정합니다. [plotSpace scaleToFitPlots : [NSArray arrayWithObjects : aaplPlot, nil]]; – Srinivas

+0

모든 데이터 포인트가 정확히 동일하면 플롯 범위는 길이가 0으로 끝납니다. 범위를 크기를 조정하고 필요에 따라 조정하여 모든 상황에서 데이터가 계속 표시되도록하려면'xRange'와'yRange'를 확인해야합니다. –

답변

0

예 정확히 우리가 우리의 가치에 따라 최소 최대 범위를 설정해야합니다 내부 기능 년대 알고 싶어.

CGFloat xMin = 0.0f; 
    CGFloat xMax = 40.0f; //i need 40 plots 
    CGFloat yMin = 0.0f; 
    CGFloat yMax = 300.0f; // should determine dynamically based on max price 
    plotSpace.xRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(xMin) length:CPTDecimalFromFloat(xMax)]; 
    plotSpace.yRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(yMin) length:CPTDecimalFromFloat(yMax)]; 
관련 문제