我被要求制作一个图表来显示每个页面上有多少用户。该图表将采用颜色编码,其中用户最多的页面将具有 100% 的不透明度,查看者最少的页面将具有 40% 的不透明度,中间的页面将具有相应的不透明度。
所以,我需要一组数字
- 最大数为 100%
- 最小数字为 40%
- 两者之间的数字介于 100% 和 40% 之间
数字可以是 1 或更大的任何整数。
给定 1000, 500, 100, 50
- 1000 应该是 100%
- 应该是 500 ??
- 应该是 100 ??
- 50 应该是 40%
或者,给定 2, 1
- 2 应为 100%
- 1 应为 40%
或者给出 1000, 1
- 1000 应该是 100%
- 1 应为 40%
或者给出 7485, 395, 3
- 7485 应为 100%
- 395应该是??
- 3 应为 40%
我希望这是有道理的。
我可以用什么方程来解决这个问题?
我知道要得到的百分比只是(#/largest_number) * 100
,但我在尝试将其置于 100% 到 40% 之间时迷失了
我能得到的最接近的是((#/largest_number) * 60) + 40
,但是假设0是最小的数字,并且给我43作为第一组数字中的最小数字(50) 而不是我需要的 40%。
提前致谢!
最佳答案
不要用 (#/largest_number) * 100
获取百分比,而是 x = ((# - lower_number)/(largest_number - lower_number) * 100
这是一个基本的标准化函数 - see here for details .
这样最大数字
将始终映射到1
,而lowest_number
将始终映射到0
,然后你可以使用您的函数 (x * 60) + 40
关于algorithm - 一组数字的百分比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66500875/