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)];

これはほとんどの場合うまく機能しますが、0.6 ではなく 0.6001 が表示されている下の図 1 のような奇妙なフォーマット エラーが発生することがあります。手動で最小範囲を 2 に変更すると、エラーは消えます。

4 桁の有効数字を使用している理由は、最大 8000 までの数値を使用でき、分数なしで表示されるためです。setMaximumSignificantDigits を 3 に変更すると、問題が CPTAxisLabelingPolicyAutomatic にあると推測される 0.601 になります。

これに関する任意の助けをいただければ幸いです。

図 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 issue trackerで報告してください。

于 2013-02-08T02:03:32.990 に答える