2015-04-01 99 views
0

我有一個散點圖,繪製圓圈。它畫得很好,我根據用戶設備的高寬比進行縮放。圈子的大小可能會有很大的不同,所以我想相應地縮放圖塊空間。問題是,當我使用使用核心繪圖基於圓半徑將散點圖繪製到Y軸

[graph.defaultPlotSpace scaleToFitPlots:graph.allPlots]; 

縮放是相對於y軸完成的。由於我使用縱橫比,因此我得到了完美的圓形,但由於這是縱向定位,並且相對於y軸完成縮放,所以圓形會在x軸上截斷。由於x軸在高寬比方面較短,我想就其進行縮放。那可能嗎?

我想要實現的是「縮小」或「縮放」我的plotSpace,所以我的所有圓都適合在plotSpace中,這似乎無法在不破壞長寬比的情況下弄清楚,從而得到延伸的圓圈。

它看起來像這樣: enter image description here

而且我希望它看起來像這樣: enter image description here

編輯:

代碼我目前使用的規模:

[self.mGraph layoutIfNeeded]; 
[self.mGraph.defaultPlotSpace scaleToFitPlots:self.mGraph.allPlots]; 

float width = self.mGraph.plotAreaFrame.bounds.size.width; 
float height = self.mGraph.plotAreaFrame.bounds.size.height; 

float aspectRatio = width/height; 

CPTMutablePlotRange *xRange = [plotSpace.xRange mutableCopy]; 
[xRange expandRangeByFactor:CPTDecimalFromCGFloat(1.0f * aspectRatio)]; 
plotSpace.xRange = xRange; 
CPTMutablePlotRange *yRange = [plotSpace.yRange mutableCopy]; 
[yRange expandRangeByFactor:CPTDecimalFromCGFloat(1.0f)]; 
plotSpace.yRange = yRange; 

回答

1

您可以從計算繪圖區域的高寬比plotArea層的210個。請先在圖上撥打-layoutIfNeeded以確保大小是最新的。使用計算的寬高比來調整由-scaleToFitPlots:計算出的繪圖範圍。


縮放後,拿到地塊面積的大小和情節的長度範圍:

CGSize paSize = self.mGraph.plotAreaFrame.plotArea.bounds.size; 
double xLen = plotSpace.xRange.lengthDouble; 
double yLen = plotSpace.yRange.lengthDouble; 

你想比xLen/yLen落得一樣paSize.width/paSize.height。將xRangeyRange展開一個大於1的因子,以使比率相等。

+0

嗯,你可以發佈代碼示例?我無法得到這個工作。 – ClockWise 2015-04-02 06:29:48

+0

我使用代碼編輯了我的原始帖子:) – ClockWise 2015-04-07 07:53:52

+0

感謝您的幫助。我並沒有完全按照你上面所說的做,但是我意識到,在我目前的情況下,比率是0.5,所以我只是將x和y的長度乘以2,以保持寬高比和雙倍距離以使它更適合對於x軸而不是y軸。 – ClockWise 2015-04-08 07:49:15