如何缩小值以使它们适合最小值和最大值

asp*_*aga 1 algorithm math graph

我有6个图形条和价格.
每个价格编号将通过尊重minmax高度表示其图形栏的高度.
我想要的是图形条的高度不会低于或高于minmax值.

所以我有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)

Ult*_*nct 8

解决方案很简单:

  • 选择最小,最大的项目,找出差异.
  • (largest_item - smallest_item)映射到(max-min).
  • 计算 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)
Run Code Online (Sandbox Code Playgroud)

一个检查,正如@amit正确指出:确保最大和最小的项目是不同的.


所以让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
Run Code Online (Sandbox Code Playgroud)

进一步,

f(93,110,55,1081,49) = 57.344961
f(49,110,55,1081,49) = 55
f(1081,110,55,1081,49) = 110
Run Code Online (Sandbox Code Playgroud)