4

シナリオ:

グラフを描く。AからBの範囲のデータポイントがあり、軸スケールを描画するための粒度を決定したい。たとえば、134から151の場合、スケールは130から155まで実行され、10進法の「丸められた」数値で開始および終了します。ただし、数値は134.31から134.35までの範囲である可能性があります。その場合、130から135までのスケールは、データの「重要性」を(視覚的に)圧縮します。134から135まで、または場合によってはスケールを描画する方がよいでしょう。 134.3から134.4。また、データ値は、代わりに0.013431から0.013435、または1343100から1343500まで実行される可能性があります。

そこで私は、「粒度」を計算して下限をに丸め、上限をに丸めて、「心地よい」グラフを作成するための洗練された方法を見つけようとしています。どういうわけかそれを「ハック」することもできますが、それでは「奇妙な」ケースがうまく処理されるという確信はほとんどありません。

何か案は?

4

2 に答える 2

1

ただのアイデア:

  1. 範囲に約10%を追加し、この数値を経験的に調整します
  2. 範囲のサイズを、必要な目盛りの数で割ります
  3. その数の常用対数を取る
  4. 結果に3を掛けてから、最も近い整数に丸めます
  5. 3を法とする余りは、最下位の小数を1、2、または5のステップで変更するかどうかを示します。
  6. 整数を3で割った結果は、10の累乗を使用することを示します。
  7. (拡張された)範囲を取り、計算されたばかりのダニの頻度に従って、そこに含まれる極端なティックポイントを計算します
  8. すべてのデータポイントが実際にその範囲内にあることを確認し、そうでない場合はティックを追加します
  9. 必要に応じて、上の整数を1つ減らして、マイナーティックを追加します。
于 2012-11-15T19:59:30.977 に答える
0

Excelグラフの軸スケールに非常によく似た非常に役立つ計算を見つけました。

ここに画像の説明を入力してください

これはExcel用に作成されていますが、グラフ軸を設定するために使用して、Objective-cコードに変換しました。

于 2014-04-03T20:16:17.923 に答える