如何正确更新 Highcharts Sankey 上的节点?

How to properly update the nodes on a Highcharts Sankey?

我正在尝试构建一个切换开关以在 Highcharts Sankey 图表上的两个不同数据集之间切换。数据或多或少地正确更新,但是节点不会在每个 chart.update() 上被破坏,因此新的节点集在旧集的顶部重新绘制。

这是代码的更新部分:

$('#yearToggle').click(function() {
    if (mySankey.title.textStr == 'Tomorrow') {
        myData = myData2;
        myNodes = myNodes2;
        myYear = 'Today'
    } else {
        myData = myData1;
        myNodes = myNodes1;
        myYear = 'Tomorrow'
    };
    mySankey.update({
        series: {
            data: myData,
            nodes: myNodes
        },
        title: {
            text: myYear
        }
    });
});

我确信有更优雅的方法来处理切换点击部分,但我主要关心的是系列中节点对象的正确更新。任何帮助将不胜感激。

这是完整的 fiddle:http://jsfiddle.net/j7kwrctn/3/

编辑:这是我更新的 fiddle,它在更新数据之前在节点上使用 .destroy()。这行得通,但并不理想,因为这意味着没有流畅的动画,这对于显示发生了多少变化非常有帮助:http://jsfiddle.net/0ex7rpfh/2/

这是一个与 Sankey 系列类型相关的错误,报告在这里:https://github.com/highcharts/highcharts/issues/8682 目前这个问题已经修复,所以你只需要直接从 GitHub master 分支导入 Highcharts 版本,通过更改链接:

<script src="https://code.highcharts.com/highcharts.js"></script>
<script src="https://code.highcharts.com/modules/sankey.js"></script>

至:

<script src="https://github.highcharts.com/highcharts.js"></script>
<script src="https://github.highcharts.com/modules/sankey.js"></script>

实例:http://jsfiddle.net/9w7fczj2/