2013-12-16 193 views
0

我目前使用核心繪圖的散點圖繪製某些數據。圓圈的大小取決於特定值的出現頻率。在繪圖時,我發現一些圓圈重疊並穿過x和y軸。ios核心繪圖 - 散點圖圓與x,y軸重疊

是否有任何方法來檢查一個圓(即繪圖點)是否跨越座標軸並自動調整該圓的大小以使其不與座標軸交叉?

編輯 - 軸是固定的。所以我不能改變軸。

編輯 - 我想知道使用哪些方法來確定一個圓是否跨越/接觸x或y軸。目前如果圓的大小是12並且其y座標是1.1,則圓重疊。我無法理解大小如何映射到圖上的圓圈。謝謝。

回答

0

號解決這個問題的最簡單的方法是找出最大的圓圈將有多大,調整範圍情節在情節空間的極端數據點之間至少留那麼多的空間(最小和最大)和繪圖空間的軸或其他邊緣。繪圖空間具有在繪圖區域層的座標空間中在數據座標和像素之間來回轉換的方法。

點轉換方法是:

-(void)plotPoint:(NSDecimal *)plotPoint numberOfCoordinates:(NSUInteger)count 
             forPlotAreaViewPoint:(CGPoint)point; 
-(void)doublePrecisionPlotPoint:(double *)plotPoint 
      numberOfCoordinates:(NSUInteger)count 
      forPlotAreaViewPoint:(CGPoint)point; 

根據您的應用(數據繪製區域)

-(CGPoint)plotAreaViewPointForPlotPoint:(NSDecimal *)plotPoint 
        numberOfCoordinates:(NSUInteger)count; 
-(CGPoint)plotAreaViewPointForDoublePrecisionPlotPoint:(double *)plotPoint 
            numberOfCoordinates:(NSUInteger)count; 

(繪圖區域數據),你可能能夠通過使用-expandRangeByFactor:的簡單因子擴大繪圖範圍。您可以通過繪圖區的寬度除以繪圖區的寬度加上圓直徑找到一個xRange的因素。使用繪圖區域的高度對yRange做類似的計算。

+0

好的。你能給我一個這樣的方法的例子嗎? – Dinesh

+0

我想檢查一個圓具有軸線重疊。那麼你能幫我一下我應該使用哪種方法。 – Dinesh

0

也許你可以檢查,看看是否直徑的一半比x和情節的Y值都較大。如果它更大,則將直徑縮小爲等於x和y中較小者的兩倍。

+0

我目前使用CGSizeMake作爲圓的大小。因此,對於具有y座標1.1的圓的情況下,該大小由CGSizeMake(12.0,12.0)給出。這與x軸重疊。你能解釋爲什麼嗎? – Dinesh