我正在考虑使用Sankey图表,但无法清楚地了解如何计算权重。
我们假设将实体(one
)分为hello
和world
的比例分别为70%和30%。
hello
分成aaa
和bbb
,也都是70/30。
从文档中,我认为权重是相对于输出节点的(JSFiddle和CodePen中的代码-由于某些原因,相同的代码拒绝在下面的SO代码段中运行):
Highcharts.chart('container', {
series: [{
keys: ['from', 'to', 'weight'],
data: [
['One', 'hello', 70],
['One', 'world', 30],
['hello', 'aaa', 70],
['hello', 'bbb', 30],
],
type: 'sankey',
}]
});
#container {
min-width: 300px;
max-width: 800px;
height: 400px;
margin: 1em auto;
border: 1px solid silver;
}
<script src="https://code.highcharts.com/modules/sankey.js"></script>
<script src="https://code.highcharts.com/highcharts.js"></script>
<div id="container"></div>
但是情况并非如此:world
和bbb
的大小相同,即30
。
这意味着权重是绝对的:在我的情况下,我需要取100
并相应地在world
(30),aaa
(70 * 0.7 = 49)和bbb
(70 * 0.3 = 21)。
如果是这样,我应该将world
放在哪里,因为它是根据其他数据自动计算出来的?(这是“中间”结果)
答案 0 :(得分:0)
我终于算出了数字。关键是使用绝对数,但要为每一步计算它们。
在我的问题示例中:
one
:100(固定)world
:30(固定)hello
:70(固定)aaa
:49(计算得出的70 * 0.7 = 49)bbb
:21(计算得出的70 * 0.3 = 21)这导致了following code。