我正在创建一个 BMI 计算器,我正在尝试创建一个量具,以便它反映 BMI。我正在使用一个使用“react-gauge-chart”的量具,它是这样渲染的
<GaugeChart
id="gauge-chart"
percent={gageCalc()}
nrOfLevels={3}
colors={["#FFFF00", "#228B22", "#FF0000"]}
/>
这是gageCalc()
和我使用的字典:
const gageCalc = () => {
try {
var c = [Math.round(calcBMI())];
var x = dict[Math.round(calcBMI())];
if (c < 16) return 0.0;
if (c > 30) return 1;
return x;
} catch (e) {
// does nothing right now
}
};
var dict = {
16: 0.0,
17: 0.16,
18: 0.33,
19: 0.4,
20: 0.4,
21: 0.5,
22: 0.5,
23: 0.5,
24: 0.66,
25: 0.66,
26: 0.7,
27: 0.825,
28: 0.825,
29: 0.9,
30: 1,
};
字典有点工作,但不是最准确的。我只是尽可能地分散百分比。
calcBMI()
简单地返回人的 BMI。所以我的问题是仪表的指针是使用基于从返回的值的百分比设置的gageCalc()
。除了我的字典,我不知道如何使BMI计上的指针准确。
例如,如果某人的 BMI 为 22,那么他们的 BMI 是正常的,并且指针将位于仪表的绿色区域,但如果他们的 BMI 为 28,那么我需要将指针落在红色区域。这是仪表的样子:
这是我正在关注的图表:
Underweight (yellow) = Below 18.5
Healthy Weight (green) = 18.5 to 24.9
Overweight (red) = 30 or greater
有没有一个公式可以为我做到这一点?有没有更好的量规我可以使用,或者我的字典是最好的方法。谢谢!