2012-06-04 62 views
2

首先,我有一個圖形(Coreplot線形圖)。我已經設置了圖的defaultPlotspace的x範圍和y範圍。Coreplot:設置全局範圍的長度不起作用

- (void) setUpXRangeForPlotspace:(CPTXYPlotSpace *) plotSpace { 

int rangeLength = [self xRangeLength]; 
plotSpace.xRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(- 0.5f) length:CPTDecimalFromFloat(rangeLength + 1.0)]; 

} 

- (void) setUpYRangeForPlotspace:(CPTXYPlotSpace *) plotSpace { 

    float maxValue = [self maximumYValue]; 

    // length = maxvalue + (10% of maxvalue); 
    plotSpace.yRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(0.0f)  length:CPTDecimalFromFloat(maxValue + (maxValue/10.0))]; 
} 

現在我的任務是根據用戶交互顯示沿x軸的圖形的一部分(區域)。爲此,我正在改變繪圖區域的globalXRange。

我帶了兩個文本框,從中獲取位置和長度。 btnAction:按下按鈕時會觸發該方法。

- (void) btnAction:(id) sender { 

    float txt1fl = [txt1.text floatValue]; 
    float txt2fl = [txt2.text floatValue]; 


    NSLog(@"txt1fl : %f, txt2fl : %f",txt1fl,txt2fl); 

    CPTXYPlotSpace *plotSpace = (CPTXYPlotSpace *)graph.defaultPlotSpace; 

    [plotSpace setGlobalXRange:[CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(txt1fl) length:(CPTDecimalFromFloat(txt2fl))]]; 
    [plotSpace setGlobalYRange:plotSpace.globalYRange]; 

    NSLog(@"Graph Global x:%f length:%f",CPTDecimalFloatValue(plotSpace.globalXRange.location),CPTDecimalFloatValue(plotSpace.globalXRange.length)); 

} 

當我改變的範圍中的位置離開長度那樣,該圖表是顯示適當的區域。也就是說,它正在滾動到該號碼所提及的位置。

甚至當我從一個更高改變長度的globalXRange到一個值 - 例如,從5.0到3.0變化的長度 - 的圖表中示出了相應的部分。也就是說,它在較大的圖片中顯示了一個較小的區域。

但是,當我改變globalXRange的長度從更高 - 例如改變長度3.0至5.0 - 圖形的範圍沒有增大。

設置我使用NSLog檢查的範圍後,如果globalXRange的長度已更改或不。令人驚訝的是,根據NSLog,長度已經發生了變化,但是從視覺上看,圖表並沒有移動也沒有改變其範圍。

我無法制定出解決方案。請幫我解決一下這個。提前致謝。

回答

5

globalXRangeglobalYRange限制了繪圖空間可以使用內置用戶交互功能進行滾動和縮放的量。使用xRangeyRange來控制圖的可見部分。

+0

謝謝。解決了這個問題。而不是改變globalXRange,現在我正在改變圖區的xRange。 – avs