2012-03-06 3 views
0

플레이어 통계를 기반으로 서버에서 동적으로 데이터를 변경하는 그래프가 있습니다. 문제는 수신 된 데이터를 기반으로 그래프를 중앙에 배치하는 방법을 파악하는 데 문제가 있다는 것입니다. 나는 제대로 구성했다고 생각했지만 추가 테스트를 통해 그래프가 완전히 중앙에서 벗어난 것을 발견했습니다. 아래 코드는 내 reloadData에 있습니다.코어 플롯 및 동적 데이터를 사용하여 그래프를 중앙에 배치하는 방법

- (void)reloadData 
{ 
    CPTXYPlotSpace *plotSpace = (CPTXYPlotSpace *)Chart.defaultPlotSpace; 
    if (maxY < valueMaxY || minY > valueMinY) 
    { 
     // Reload the plot graph 
     maxY = valueMaxY + (valueMaxY/2); 

     // Properly align the Y-Axis 
     int tickCount = maxY/5; 

     if(tickCount <= 1) 
     { 
      tickCount = 1; 
     } 

     plotSpace.yRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromInt(tickCount * -1) length:CPTDecimalFromInt(maxY - (tickCount * -1))]; 

     CPTXYAxisSet *axisSet = (CPTXYAxisSet *)Chart.axisSet; 
     CPTXYAxis *y = axisSet.yAxis; 
     y.majorIntervalLength = CPTDecimalFromInt(tickCount); 
     y.minorTicksPerInterval = 1; 
     NSArray *exclusionRanges = [NSArray arrayWithObjects: 
         [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(-2.0) length:CPTDecimalFromFloat(2.0)], 
         nil]; 
     y.labelExclusionRanges = exclusionRanges; 
    } 

    [Chart reloadData]; 
} 

간략한 설명은 sotres보기에 따라 차트를 중심으로하고 싶습니다. 가능한 경우 y 축과 x 축 모두에서 5 개 이상의 진드기를 표시하고 싶습니다. 위의 스 니펫 (snippet)에서 수행하려는 작업은 y 축뿐입니다. 서버에서 데이터를 가져 와서 값이 이전 값보다 크고 작은 지 확인하십시오. 그런 다음 reloadData를 호출하고받은 값이 이전 메시지의 최소값 또는 최대 값보다 큰지 확인합니다. 만약 그렇다면 그래프와 플롯을 재조정합니다.

모든 조언을 주시면 감사하겠습니다.

답변

0

나는 그것을 알아 냈다. 내 분부터 내 최대 값까지 총 거리를 가져 와서 그 중심을 찾아야했습니다. 일단 그것을 얻으면 y 축 직교 점을 중심으로 설정하여 최소값을 추가했습니다.

관련 문제