1

価格を含む 6 つのグラフ バーがあります。
価格の数値minは、高さを考慮してグラフバーの高さを表しmaxます。
私が欲しいのは、グラフバーの高さが値を下回ったり上回ったりしないことminですmax

だから私は と の値を持っていmin = 55ますmax = 110
そしてprice numbers、次のとおりです。

  1. 49
  2. 212
  3. 717
  4. 1081
  5. 93

どの数学的アルゴリズムによって期待される結果を得ることができましたか?
これはある種の動的でスケーラブルな棒グラフです。

したがって
、価格表の最小値と最大値は次のようになります49(min price) => 55(min)1081 (max price) => 110(max)

4

2 に答える 2

9

解決策は簡単です:

  • 最小のアイテムと最大のアイテムを選び、違いを見つけます。
  • (最大項目 - 最小項目) は (最大 - 最小) にマップされます。
  • コンピューティングratio = (max-min)/(largest_item-smallest_item)
  • final_value = min_value + ratio*(value-smallest_item)

数学関数として:

f(x,max,min,largest,smallest) = min + (max-min)/(largest-smallest)*(x-smallest)
where:
x : Input item's price
max: Maximum value (here, 110)
min: Minimum value (here, 55)
largest: Largest item in input (Here, 1081)
smallest: Smallest item in input (Here, 49)

@amitが正しく指摘しているように、1つのチェック:最大アイテムと最小アイテムが異なることを確認してください。


x = 93 としましょう。他に 4 つの値があります。

f(x,max,min,largest,smallest) = min + (max-min)/(largest-smallest)*(x-smallest)

value = 55  +   ((110-55)/(1081-49)) * (93-49)
value = 57.344961

さらに遠く、

f(93,110,55,1081,49) = 57.344961
f(49,110,55,1081,49) = 55
f(1081,110,55,1081,49) = 110
于 2012-06-20T13:54:11.100 に答える
1

関数:

[(x - min ) / (max-min)*55] + 55

あなたが求めている境界を確実にします-しかしあなたはまた考慮すべきです-グラフは何を示すべきですか?読者に何を理解してもらいたいですか?

なんで?

  • (x-min) / (max-min)範囲内の数値を示します[0,1]-の場合は0、。の場合minは1 max
  • 55を掛けると、範囲内の数値が保証されます[0,55]
  • 55を追加すると、[55,110]予想どおり、範囲内の数値が保証されます。

(*)注:max = minの場合、0での除算のために上記は失敗します。これらの場合は、手動で対処してください。

于 2012-06-20T13:53:35.560 に答える