2011-08-10 5 views
1

[그래프 reloadData]를 사용하여 새 데이터로 업데이트하는 CPTScatterPlot이있는 CPTXYGraph가 있습니다. 또한 데이터를 기반으로 범위를 설정합니다. 내 문제는 범위가 바뀌면 축이 제대로 업데이트되지만 눈금 선은 표시되지 않으므로이 http://inky.ws/g/hw (x 축 끝의 눈금 선 없음)으로 끝납니다.iOS의 코어 플롯 스 캐터 플롯에서 범위가 변경되면 그리드 선을 강제로 업데이트하십시오.

axis.gridLinesRange = nil을 설정하고 범위를 업데이트 할 때 모든 그리드 라인 속성을 다시 설정해 보았습니다. 아무 소용이 없습니다.

원래의 플롯은 괜찮아 보이지만 더 큰 데이터 세트로 업데이트하면 추가 된 범위에 그리드 선이 없습니다.

+0

그래프의 전체 크기 또는 플롯 범위 만 변경 하시겠습니까? –

+0

범위 만 –

+0

어떤 코어 플롯 버전을 사용하고 있습니까? –

답변

3

동일한 문제가 있었고 다음 해결 방법을 사용했습니다. 값의 새 경계를 계산하고 plotRangeWithLocation : length : convenience 메서드를 사용하여 기본 플롯 공간 범위를 새 것으로 바꿉니다.

성능면에서 만족스럽지 않고 개념적으로 만족스럽지 않지만 (프레임 워크의 일을하는 것처럼 느껴짐) 나에게 도움이되었습니다.

CPTXYPlotSpace *plotSpace = (CPTXYPlotSpace *)graph.defaultPlotSpace; 
plotSpace.yRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat([valuesMin floatValue]) length:CPTDecimalFromFloat([valuesMax floatValue]-[valuesMin floatValue])]; 


CPTXYAxisSet *axisSet = (CPTXYAxisSet *)graph.axisSet;  
CPTXYAxis *y = axisSet.yAxis; 

float amplitude = ([valuesMax floatValue]-[valuesMin floatValue]); 
NSDecimal intervalLength = CPTDecimalFromFloat(100); 
y.majorIntervalLength = intervalLength; 
+0

플롯 범위를 업데이트하는 올바른 방법입니다. 항상 새로운 범위를 만들어야합니다. 기존의 플롯 범위를 검색하여 제자리에서 변경하면 그래프에 변경 사항이 통지되지 않습니다. –

+0

그러면 KVO 또는 알림을 사용해야합니다. 그냥 생각 ... –

+0

그 이유는 범위가 복사 속성입니다. 변경된 내용을 보려면 Core Plot 이슈 트래커에 대한 개선 요청을하십시오. http://code.google.com/p/core-plot/issues/list –

관련 문제