9

合理的なスケールと目盛り間隔を計算できる軸の一連の値 (日付) を指定するアルゴリズムを見つけることができる場所を知っている人はいますか?

4

2 に答える 2

6

ティック間隔は、表示領域に依存します。適切な目盛りを作成するには、グラフの幅 (時間が X 軸上にあると想定しています) と、選択したフォントの日付文字列の幅を考慮する必要があります。

基本的なアルゴリズムは次のようになります。

  • 日付のリストをスキャンして、最小値と最大値を見つけます。
  • グラフの幅を日付文字列の幅で割ります (これは、*両方*の幅が一定の場合、変数に格納された結果で 1 回実行できます)。固定幅フォントと MM-DD-YYYY 日付形式を使用すると、この手順が簡単になります。可変幅フォントと、月の名前を綴る日付形式を使用する場合は、文字列に余分なパディングを追加して、各日付文字列が同じ幅になるようにする必要があります。*余分な*パディングと言ったことに注意してください。固定の日付形式を使用する場合でも、混雑を避けるために、少なくとも 1 つのスペースをパディングする必要があります。この値を「目盛り」と呼びます。これは、グラフの幅に基づいて、軸の目盛りが正確にいくつ収まるかだからです。
  • 最短日から最長日までの日数を計算します (両端を含む)。これを行う方法は、使用している言語によって異なります。頼りになる Date と Calendar の適切な実装があることを願っています。この値を単に「日」と呼びます。
  • 式「間隔 = 日 / (ティック - 1)」でティック間隔を計算します。
  • 最大日付に達するまで最小日付に「間隔」を追加して、ティック間隔に該当する日を決定します。繰り返しますが、これは使用する言語によって異なります。
于 2008-10-25T12:56:46.627 に答える
1

jQuery flotグラフ ライブラリを使用しています。これはオープン ソースであり、軸/目盛りの生成が非常にうまく行われます。そのコードを見て、そこからいくつかのアイデアをつまむことをお勧めします。

于 2008-10-27T05:42:24.970 に答える