1

棒グラフに価格結果を入力する必要があるプロジェクトに取り組んでいます。グラフには、特定の価格帯内のアイテムの数が表示されます。たとえば、Amazon で 0 ~ 10 ドルの価格帯に 9 つの商品がある場合、x 軸には 0 ~ 10 ドルが表示され、y 軸には 9 の値が入力されます。

私の棒グラフには 8 本の棒があり、すべて同様の価格帯です。$0-$10、$10-$20、$20-$30...など。

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

そのため、現在、次のように x 軸のポイントを作成しています。

私は最低の結果を取ります: @numbers[0] = results[0];

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

次に、2 つの中央値を見つけます。 @numbers[4] = (@numbers[0]+@numbers[8])/2;

その後、このプロセスをさらに 6 回繰り返します

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

これで必要な結果が得られますが、非常に繰り返しが多いようで、もっと良い方法があると思います。

ループを作成しようとしましたが、冗長な方法で記述できませんでした。

これを行うためのより迅速な方法、またはおそらくDRYのラインに沿った何かがありますか?

4

1 に答える 1

0

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

binspacing = overall range / (numberofbins-1);

ビンnの位置は、numbers[0]のx軸位置にビン間隔のn倍を加えたものになります。

于 2009-08-28T21:51:57.840 に答える