2015-11-16 107 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值简化代码。