如何计算Sankey图表中的权重?

时间:2018-06-28 12:19:15

标签: highcharts

我正在考虑使用Sankey图表,但无法清楚地了解如何计算权重。

我们假设将实体(one)分为helloworld的比例分别为70%和30%。

然后,将

hello分成aaabbb,也都是70/30。

从文档中,我认为权重是相对于输出节点的(JSFiddleCodePen中的代码-由于某些原因,相同的代码拒绝在下面的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>

但是情况并非如此:worldbbb的大小相同,即30

这意味着权重是绝对的:在我的情况下,我需要取100并相应地在world(30),aaa(70 * 0.7 = 49)和bbb(70 * 0.3 = 21)。

如果是这样,我应该将world放在哪里,因为它是根据其他数据自动计算出来的?(这是“中间”结果)

1 个答案:

答案 0 :(得分:0)

我终于算出了数字。关键是使用绝对数,但要为每一步计算它们。

在我的问题示例中:

  • one:100(固定)
  • world:30(固定)
  • hello:70(固定)
  • aaa:49(计算得出的70 * 0.7 = 49)
  • bbb:21(计算得出的70 * 0.3 = 21)

这导致了following code