首页 > 解决方案 > 网络图遇上桑基图

问题描述

有没有办法在 Highcharts 中创建一个网络图,其中连接的宽度与数据系列成比例(如 Sankey 图?)

该应用程序是“交通流”可视化(但在逻辑点之间,而不是物理点之间,因此覆盖在网络图而不是地图上。)

标签: highcharts

解决方案


默认情况下不支持此功能,但您可以通过对getLinkAttribues方法进行小的修改轻松获得想要的结果:

H.seriesTypes.networkgraph.prototype.pointClass.prototype.getLinkAttribues = function() {
    var linkOptions = this.series.options.link,
        maxValue,
        pointOptions = this.options;

    if (!this.linkWidth) {
        this.series.points.forEach(function(p) {
            maxValue = maxValue ?
                Math.max(maxValue, p.options.value) :
                p.options.value;
        });

        this.series.points.forEach(function(p) {
            p.linkWidth = p.options.value * 10 / maxValue;
        });
    }

    return {
        'stroke-width': this.linkWidth || 1,
        stroke: pointOptions.color || linkOptions.color,
        dashstyle: pointOptions.dashStyle || linkOptions.dashStyle
    };
}

现场演示:https ://jsfiddle.net/BlackLabel/13zt8qds/

文档:https ://www.highcharts.com/docs/extending-highcharts


推荐阅读