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