2012-08-14 2 views
1

CorePlot을 사용하여 작은 iPhone 응용 프로그램을 만들고 있습니다. 그래프는 10 개의 막대로 구성됩니다. 불행하게도, y 값 그러므로 나는 오히려 큰 yRange 내 plotspace를 작성, 0과 1 백만 사이에 다를 수 있습니다거대한 y 축이있는 coreplot barchart를 그리는 방법은 무엇입니까?

plotSpace.yRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromDouble(yAxisStart) 
               length:CPTDecimalFromDouble(yAxisLength)]; 

내가 경험하고하는 것은 그래프를로드 할 때 내 응용 프로그램이 정말 느리게, 그리고 내가 할 수있는 것입니다 이 문제를 yAxisLength의 다소 큰 값으로 지정하십시오. y 축에서 눈금 표시를 제거했지만 이미 성능이 매우 나쁩니다. 성능 개선 방법을 알 수있는 사람이 있습니까?

답변

3

라벨이나 틱이 필요없는 경우에도 라벨 매개 변수를 업데이트해야합니다. 기본 레이블 지정 정책은 틱 마크와 레이블을 한 단위 씩 만듭니다. 그래서 큰 축 범위로 인해 앱 속도가 느려집니다. 또한 각 레이블에 대해 별도의 Core Animation 레이어를 만듭니다. 1 백만 개의 레이블을 만드는 데는 많은 시간이 걸리고 많은 메모리가 필요합니다.

눈금이나 레이블이 필요없는 경우 레이블 정책을 CPTAxisLabelingPolicyNone으로 설정하십시오. 그렇지 않으면 다양한 레이블링 속성 (사용하려는 정책 속성은 선택한 정책에 따라 다름)을 조정하여 축 범위 내에서 적절한 틱 수를 얻습니다.

+0

에릭, 힌트를 주셔서 감사합니다. 매력처럼 작동합니다. 그러나 4 개의 라벨이 필요 하겠지만 성능 저하없이 맞춤 라벨로 제공 할 수 있습니다. – moq

+1

'majorIntervalLength'를 더 큰 값 (예 : 250,000)으로 설정하거나 라벨 정책을 변경하십시오. Plot Gallery 예제 애플리케이션에는 사용 가능한 모든 정책을 보여주는 데모가 있습니다. –

0

저는 CorePlot을 사용하지 않았지만 플롯하기 전에 데이터를 확장 할 수 있습니다.

y- 스케일의 범위가 100 만까지라면 y- 최대와 모든 y- 값을 100,000으로 나눕니다. 그런 다음 y 축 레이블에 "(x100,000)"과 같은 것을 추가하십시오.

+0

힌트를 주셔서 감사합니다. 좋은 해결 방법이라고 생각합니다. – moq

0
y.labelingPolicy  = CPTAxisLabelingPolicyAutomatic; 
    y.majorGridLineStyle = nil; 
    y.minorGridLineStyle = nil; 
    y.axisConstraints  = [CPTConstraints constraintWithLowerOffset:0.0]; 
    y.majorIntervalLength = CPTDecimalFromDouble(maxRange/2.0); 

나를 위해 일했습니다.

관련 문제