2012-10-25 69 views
0

情景:五個週期{3M,6M,1Y,2Y & 3Y}的五個圖,每個圖都有自己的(1-2)散點圖;共享相同的y範圍(值)。
每個期間都有不同的x範圍和標籤政策。
例如,可以有修補程序或位置策略;另一個沒有。

X-範圍似乎是不變的/plot-space。
所以我正在考慮用他們特定的xRanges &標籤策略創建平行繪圖空間。
我研究了情節空間與x.axis(多個)&圖(或多個)的關係:在情節空間之間切換

格拉夫< === {的NSMutableArray * plotSpaces}
x.axis /積空間。
劇情/ plotspace

所以我相信我能:
1)創建plotspace。
2)將圖空間分配給特定圖,即x軸& xRange。
3)在圖中添加或刪除圖。
4)重繪圖。

所以當用戶選擇一個週期/重複空間時,我所需要做的就是:用週期圖替換任何現有的圖,這將導致圖顯示相應的x軸(Y軸常見)?

[myGraph removePlot:(CPTPlot *)oldPlot]; 
[myGraph addPlot:(CPTPlot *)plot toPlotSpace:(CPTPlotSpace *)space]; 

......我有點迷路了。

回答

0

軸也被分配到繪圖空間。您也需要換出軸。通過添加和移除繪圖和座標軸,您將獲得相對較高的性能。

正如您所觀察到的,繪圖範圍是不可變的。這隻意味着你不能改變現有的範圍,並不是說你不能設置一個新的範圍。創建一個新的CPTPlotRange對象或創建一個現有對象的可變副本。

無論何時您想更改繪圖比例,您都需要執行以下操作。這些可以全部改變,無需刪除和替換圖表的主要部分。

  1. 如上所述更改繪圖範圍。
  2. 更新軸的標籤策略和相關屬性。
  3. 打電話-reloadData在圖上加載新數據。
+0

我試圖用一個新的來替換舊XRANGE: 'CPTPlotRange * myXRange = [[CPTPlotRange的alloc] initWithLocation:CPTDecimalFromDouble(0.0)長度:CPTDecimalFromUnsignedInteger(1)];plotSpace。xRange = myXRange; [myXRange release];' ...使用'1'來查看我是否有所作爲。 但是,唉,我看到範圍沒有區別;即使在做圖reloadData之後。 –

+0

這是默認範圍。試試別的。 :-) –

+0

你可以請更具體嗎?我想我可以使用非默認的xRange替換plotSpace的xRange,正如我試過的。也就是說,我創建了一個範圍@位置和長度;然後將其分配給當前(實際)情節空間。我應該做什麼不同? –