0

我正在使用 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

4

1 回答 1

0

这听起来像是标签计算中的舍入误差。请在 Core Plot问题跟踪器上报告。

于 2013-02-08T02:03:32.990 回答