我使用下面的代码来计算YAxis值的范围:
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
,我需要图表作为第二张图像
答案 0 :(得分:0)
首先,我会坚持使用默认标签政策CPTAxisLabelingPolicyFixedInterval
。您可以在确定首选绘图范围时选择majorIntervalLength
,并确保刻度位置将落在所需的值。
了解Core Plot如何使用CPTAxisLabelingPolicyAutomatic
标签政策确定刻度线位置(请参阅this method)。您可以使用相同的算法找到最佳的滴答间隔,然后将该范围的起始位置和长度调整为甚至是滴答间隔的倍数。请注意,Core Plot使用十进制值进行所有数学运算,因此它可以保持非常大且非常小的值。如果您知道数据总是在不会导致数字准确性问题的范围内,则可以使用double
值来简化代码。