2013-06-07 2 views
1

코어 플롯을 사용하여 막대 그래프를 만들려고합니다. y 축을 올바르게 축척하거나 정확한 위치에 눈금을 표시 할 수 없습니다.코어 플롯 바 그래프 Y 축 문제

CPTXYPlotSpace *plotSpace = (CPTXYPlotSpace *) graph.defaultPlotSpace; 
plotSpace.yRange = [CPTPlotRange plotRangeWithLocation:CPTDEcimalFromFloat(0) length:CPTDecimalFromFloat(max_value); 

을 그리고 MAX_VALUE 10 다음 아무것도 높다는 그래프를로드 할 시간의 부당한 금액을 소요 : 나의 가장 큰 문제는 내가 설정 한 경우이다. 예를 들어 모든 값의 상단을 표시하기 위해 max_value가 약 1000 일 필요하지만 1000으로 설정하면 화면을로드하는 데 15 초 이상 걸립니다. 그러나 10으로 설정하면 막대 그래프가 전체 화면을 차지하고 상단을 볼 수 없습니다.

이 부분을 처리하는 코드의 나머지 부분입니다. 어떤 조언을 주시면 감사하겠습니다. 나는 대부분의 것들의 엑스 코드와 함께 찾는 것 같다으로

CPTXYPlotSpace *plotSpace = (CPTXYPlotSpace *) graph.defaultPlotSpace; 
plotSpace.yRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(0) 
               length:CPTDecimalFromFloat(1000)]; 
[plotSpace scaleToFitPlots:[NSArray arrayWithObjects:_liftOffPlot,_sideLeanPlot,_forwardLeanPlot,_crossLegsPlot,nil]]; 
graph.plotAreaFrame.borderLineStyle = nil; 


axisSet.yAxis.title = @"times completed"; 
axisSet.yAxis.titleTextStyle = axisTitleStyle; 
axisSet.yAxis.titleOffset = -25.0f; 
axisSet.yAxis.axisLineStyle = nil; 

axisSet.yAxis.labelingPolicy = CPTAxisLabelingPolicyAutomatic; 
axisSet.yAxis.preferredNumberOfMajorTicks = 10; 
axisSet.yAxis.minorTicksPerInterval = 1; 
axisSet.yAxis.minorTickLocations = nil; 
axisSet.yAxis.majorTickLocations = nil; 
axisSet.yAxis.title = @"times completed"; 
axisSet.yAxis.titleTextStyle = axisTitleStyle; 
axisSet.yAxis.titleOffset = -25.0f; 
axisSet.yAxis.axisLineStyle = nil; 

axisSet.yAxis.majorIntervalLength = CPTDecimalFromString(@"100"); 
axisSet.yAxis.orthogonalCoordinateDecimal = CPTDecimalFromString(@"0"); 

axisSet.yAxis.visibleRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromInt(0) length:CPTDecimalFromInt(1000)]; 
axisSet.yAxis.gridLinesRange = axisSet.yAxis.visibleRange; 

답변

2

, 그것은 당신이 당신의 코드를 삽입 위치에 대한 모든 것입니다. CPTPlotRange : PlotRangeWithLocation : Length를 설정하기 전에 실제로 느리고 버그가 있습니다. 대신 축의 다른 값을 설정 한 후 코드 끝 부분에 추가하면 갑자기 지연이 거의 없습니다. 실제로 튜토리얼에서이 코드를 얻었고 필자가 필요로하는 부분에 맞도록 수정했지만 튜토리얼에는 데이터 길이가 훨씬 더 짧기 때문에 동일한 지연이 없다고 생각합니다.

그래서이 문제를 해결하기 위해 전에 축을 설정 한 후 다음 코드를 입력해야했습니다.

CPTXYPlotSpace *plotSpace = (CPTXYPlotSpace *) graph.defaultPlotSpace; 
plotSpace.yRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(0) 
              length:CPTDecimalFromFloat(1000)]; 
[plotSpace scaleToFitPlots:[NSArray  arrayWithObjects:_liftOffPlot,_sideLeanPlot,_forwardLeanPlot,_crossLegsPlot,nil]]; 
graph.plotAreaFrame.borderLineStyle = nil; 
+0

코어 플롯 1.2를 사용해야합니다. 해당 릴리스의 라벨 코드와 관련하여 알려진 문제점이 있습니다. 좋은 해결 방법을 찾았습니다. 다른 릴리스가 없지만이 문제는 Mercurial에서 가져올 수있는 최신 코드에서 수정되었습니다. –

+0

1.2가 사용 중이므로 문제가되어야합니다. 감사. – MichelleJS