2015-11-16 54 views
0

我使用下面的代碼來計算y軸值的範圍的最近的可能值:IOS核心情節如何獲得最小Y軸值

plotSpace.yRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(yLow_NBH) 
               length:CPTDecimalFromFloat(yHigh_NBH - yLow_NBH)]; 
axisSet.yAxis.preferredNumberOfMajorTicks = 4.0; 
axisSet.yAxis.labelingPolicy = CPTAxisLabelingPolicyEqualDivisions; 

我想圖形,開始從最可能最接近值Y軸Y最小值。例如,如果Ymin是5000並且兩個值之間的間隔是500,那麼yAxis應該從4500,5000,5500等開始。

在此先感謝

我需要的圖形作爲第二圖像,如果YMIN是9000

enter image description here

+0

請描述你的意思是「最好的」。對於給定的值,5,000似乎是一個很好的數字來啓動該範圍,除非您需要在範圍的邊緣留出空間,例如情節符號或數據標籤。還有其他因素需要考慮嗎? –

+0

最好的可能值是指無論什麼值是yMin Yaxis應該從最近的YMin值開始,基於區間差異。假設我有三個值5000,6500,9000所以YMin = 5000和YMax = 9000.So範圍將是5000,6000, 7000,8000,9000。而對於0指數YAxis值將是5000,看起來沒有任何東西已被繪製(沒有散射線將是可見的),因爲5000是最小值。我不想將Ymin的值保持爲「0」因爲對於更高的值,Interval也會非常高。我想要的範圍爲4000,5000,6000等等,以便可以在圖表中看到5000值的繪圖 –

+0

Eric我在我的主帖中附加了圖像,以便您可以瞭解我的要求究竟是什麼。 –

回答

0

首先,我會堅持使用默認標籤策略,CPTAxisLabelingPolicyFixedInterval。當您確定首選繪圖範圍時,您可以選擇majorIntervalLength,並確保刻度位置將降至所需值。

查看Core Plot如何使用CPTAxisLabelingPolicyAutomatic標籤策略確定刻度位置(請參閱this method)。您可以使用相同的算法來查找最佳的時間間隔,然後調整範圍的起始位置和長度,使其落在偶數倍的間隔內。請注意,Core Plot可以用十進制值進行所有數學運算,因此它在非常大和非常小的值下保持準確。如果您知道數據始終落在不會導致數字準確性問題的範圍內,則可以使用double值簡化代碼。