如何跳过sankey图表中的一级数据?

时间:2018-06-29 05:51:11

标签: highcharts

考虑以下图表(以下代码在SO代码段中不起作用,请参见equivalent Codepen.io

Highcharts.chart('container', {
  series: [{
    keys: ['from', 'to', 'weight'],
    data: [
      ['start', 'hello', 70],
      ['start', 'world', 20],
      ['start', 'yuhu', 10],
      ['hello', 'aaa', 49],
      ['hello', 'bbb', 21],
      ['bbb', 'OK', 21],
      ['world', 'OK', 30],
      // up to now everything is OK
      // yuhu and aaa should be at the same level as OK
      ['yuhu', 'KO', 10],
      ['aaa', 'KO', 49]
    ],
    type: 'sankey',
  }]

});
<script src="https://code.highcharts.com/modules/sankey.js"></script>
<script src="https://code.highcharts.com/highcharts.js"></script>
<div id="container"></div>

如果注释掉data的最后两个元素,则该图很好。我想将yuhuaaaOK在同一垂直“层”合并。

通过测试,我发现合并时在当前层之后立即设置了下一个“层”。

在我的情况下,yuhuaaa位于不同的“层”上,它们不能干净地合并。 一种解决方案是让yuhu扩展或跳过一个“层” (并且与aaa处于同一级别,即在预期的着陆“层”之前一个“层” )。

这有可能实现吗?

1 个答案:

答案 0 :(得分:2)

通常,您可以使用https://codepen.io/anon/pen/OErjZg选项控制在其上呈现节点的列:nodes

Highcharts.chart('container', {
  series: [{
    keys: ['from', 'to', 'weight'],
    nodes: [{
      id: 'KO',
      column: 3
    }],
    data: [
        ['start', 'hello', 70],
        ['start', 'world', 20],
        ['start', 'yuhu', 10],
        ['hello', 'aaa', 49],
        ['hello', 'bbb', 21],
        ['bbb', 'OK', 21],
        ['world', 'OK', 30],
        // up to now everything is OK
        // yuhu and aaa should be at the same level as OK
        ['yuhu', 'KO', 10],
        ['aaa', 'KO', 49]
    ],
    type: 'sankey', 
  }]

});