iOS CorePlot数字格式的y轴

时间:2013-02-07 09:12:49

标签: ios objective-c core-plot nsnumberformatter

我正在使用Core Plot 1.1在iOS6中绘制一个简单的散点图。我正在使用以下代码来正确格式化我的y轴,然后动态缩放到绘图数据。

CPTXYAxis *y = axisSet.yAxis;
y.labelingPolicy              = CPTAxisLabelingPolicyAutomatic;
y.minorTicksPerInterval       = 3;
y.preferredNumberOfMajorTicks = 6;
y.majorGridLineStyle          = majorGridLineStyle;
y.minorGridLineStyle          = minorGridLineStyle;

...

NSNumberFormatter * yformatter =  [[NSNumberFormatter alloc] init];
[yformatter setUsesSignificantDigits:YES];
[yformatter setMaximumSignificantDigits:4];
[yformatter setMaximumFractionDigits:1];
[yformatter setRoundingMode:NSNumberFormatterRoundCeiling];
y.labelFormatter = yformatter;

然后我根据要使用maxPlotValue绘制的数据动态更改范围,但将其限制为最小值。

plotSpace.xRange = [CPTPlotRange
                    plotRangeWithLocation:CPTDecimalFromFloat(0)
                    length:CPTDecimalFromFloat(5)];
plotSpace.yRange = [CPTPlotRange
                    plotRangeWithLocation:CPTDecimalFromFloat(0)
                    length:CPTDecimalFromFloat(maxPlotValue)];

这在大多数情况下效果很好但有时我得到一个奇怪的格式错误,如下图1所示,其中0.6001代替0.6。如果我手动将最小范围更改为2,则错误消失。

我使用4位有效数字的原因是我可以将数字设置为8000,然后显示没有分数的数字。如果我将setMaximumSignificantDigits更改为3,我得到0.601,我想这表明问题出在CPTAxisLabelingPolicyAutomatic上。

对此的任何帮助将不胜感激。

图1,格式化错误: https://dl.dropbox.com/u/8083213/fig_1.png

图2,格式化没有错误: https://dl.dropbox.com/u/8083213/fig_2.png

1 个答案:

答案 0 :(得分:0)

这听起来像标签计算中的舍入误差。请在核心图issue tracker上报告。