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

时间:2012-06-20 13:44:14

标签: algorithm math graph

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

所以我的值为min = 55max = 110 price numbers是:

  1. 49
  2. 212
  3. 717
  4. 1081
  5. 93
  6. 通过哪种数学算法,我可以达到预期的效果? 它是某种动态可扩展条形图。

    修饰
    因此,价格表中的最小值和最大值将为:49(min price) => 55(min)1081 (max price) => 110(max)

2 个答案:

答案 0 :(得分: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)

一次检查,正如@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

此外,

f(93,110,55,1081,49) = 57.344961
f(49,110,55,1081,49) = 55
f(1081,110,55,1081,49) = 110

答案 1 :(得分:1)

功能:

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

确保您追求的界限 - 但您还应该考虑 - 图表应该显示什么?您希望读者从中了解什么?

为什么?

  • (x-min) / (max-min)[0,1]提供范围min - 0的数字, 1 max
  • 将其与55相乘可确保范围为[0,55]的数字。
  • 添加55可确保范围[55,110]中的数字 - 符合预期。

(*)注意:对于max = min - 由于除0而导致上述失败,请手动处理这些情况。