修正缩放范围后的数字分布



我不确定这是否就是所谓的"分布",所以请评论它是否是数学上的其他东西。我有一个需要重新缩放以完全填充堆叠条形图的数字列表:

const list = [[1, 8, 3, 9], [10, 2, 7, 6]]

每个值的范围是1..10,这就是我缩放它们的方式:

const scaled = list.map(values => values.map(value => 10 / value))

但这完全打乱了分布,条形图并没有完全填充整个可用宽度到100%。再次不确定这是否是关于"分配",所以我会接受建议。每组都属于一个堆叠的条形图,总值必须加起来达到10,而较大的值在显示时保留较大的视觉效果。

编辑现在的样子,使用上面的"缩放"方法,但我需要每个条形图来填充宽度。

您需要对条目进行规范化,以将其相加为相同的数字。您可以将每个条目除以整个集合的总和,然后乘以所需的总和:

function normalizeDistribution(entries, max) {
const sum = entries.reduce((sum, entry) => sum + entry);
return entries.map(n => n / sum * max);
}

以下是使用方法:

const list = [[1, 8, 3, 9], [10, 2, 7, 6]];
const max = 10;
const normalizedList = list.map(entries => normalizeDistribution(entries, max));
/*
result:
[
[0.47619047619047616, 3.8095238095238093, 1.4285714285714284, 4.285714285714286],
[4, 0.8, 2.8000000000000003, 2.4]
]
*/

现在,您可以将normalizedList传递到图表,它将生成全宽条形图。

最新更新