2009-08-28 13 views
1

私は、棒グラフに価格の結果が表示されるようにするプロジェクトに取り組んでいます。このグラフには、指定した価格帯の商品数が表示されます。たとえば、アマゾンの場合、$ 0〜$ 10の価格帯に9つの項目があり、x軸は$ 0〜$ 10を表示し、y軸は9の値を取ります。x軸の点をプロットする効率的な方法は?

私の棒グラフには8バー、すべて同じような価格帯です。 $ 0- $ 10、$ 10- $ 20、$ 20- $ 30 ...

私の質問はこれらの個々のポイントを定義する最も良い方法は何ですか?これらの項目の間に共通の価格帯はないので、のx軸は静的な数字にすることはできません。結果の範囲内で動的に計算する必要があります。

そのように、私はx軸のポイントを作成しています現在次のように:

が、私は最低の結果取る: @numbers[0] = results[0];

をそして、私は最高の結果を取る: @numbers[8] = results[-1];

次に、thの中央値@ 2: @number [4] =(@number [0] + @ numbers [8])/ 2;

Iは、プロセスを繰り返す

6回

@numbers [2] =(@numbers [0] + @番号[4])/ 2。 @number [6] =(@number [4] + @ numbers [8])/ 2; @number [1] =(@number [0] + @ numbers [2])/ 2; @number [3] =(@number [2] + @ numbers [4])/ 2; @number [5] =(@number [4] + @ numbers [6])/ 2; @number [7] =(@number [6] + @ numbers [8])/ 2;

これは私に必要な結果をもたらしますが、それはひどく反復しているように見え、より良い方法があると思います。

ループを作成しようとしましたが、それほど冗長ではありませんでした。

DRYの行に沿って、これを行うより速い方法がありますか?

答えて

0

ビンは常に同じサイズですか?あなたの例では、すべての共有範囲= 10です。もしそうなら、あなたは何ができる:

binspacing = overall range/(numberofbins-1); 

とビンnの位置は数字[0]プラスn回binspacingのx軸の位置になります。

+0

おそらく私のやり方は、できるだけ複雑なコードを書くことが目標だったなら、優れていたはずです。ありがとう。 – ryan

+0

これは私の答えが目的を果たすことを意味しますか? – Argalatyr

関連する問題