0

棒グラフを生成しています。上記のグラフを生成するデータの範囲は非常に広いため、グラフの一部の領域は常に低く、一部の領域はチャートから外れます。

これを特定の数値 (200 など) に「正規化」する計算は何ですか?大きな値は大きくなるほど縮小され、小さい値は大きくなりますか?

4

3 に答える 3

8

表示目的で実際にデータを変更する場合は、値を目標値に近づける基本的な方法がいくつかあります。最も簡単なのは、その値で加重平均を行うことです。A' = (1-α)*A + α*Bここで、alpha は 0 から 1 の間の重み、A はグラフ上の数値、B は目標値です。

たとえば、「正規化」しようとしてい200て、数値が100 120 200 220 400それぞれ A に、200 が B に、.5 がアルファに差し込まれている場合、次のようになります。150 160 200 210 300

別のアルファを選択して、ターゲット値に向かってデータをどれだけ伸ばすかを調整できます。.9 のような高い数値はデータをより多く引き伸ばし、.1 のような低い数値はデータの引き伸ばしを少なくします。

于 2013-01-02T02:58:58.070 に答える
4

少し読んでも構わないと思っているかどうかはわかりませんが、d3.jsフレームワークのスケーリングチュートリアル(http://d3js.org/)は、視覚化のスケーリング部分の非常に堅実な入門書であることがわかりました。

http://alignedleft.com/tutorials/d3/scales/

于 2012-12-31T08:27:52.983 に答える
1

ゼロベースのグラフの場合: 値の最大値を計算し、各棒グラフを表示します:

barHeight[i] = (maxBarHeight*value[i])/maxVal;  

ゼロではなく最小値に基づいてグラフを作成する場合でも、グラフの最小値付近のバーの高さをゼロ以外にしたい場合があります。したがって、最小値を計算して表示します。

 barHeight[i] = minBarHeight + 
         (maxBarHeight - minBarHeight ) * (value[i] - minVal) / ( maxVal - minVal );

( Rq : minVal がゼロまたはゼロに近い場合、minVal = minBarHeigth = 0 を設定すると、最初のケースになります)

于 2013-01-02T03:18:28.910 に答える