Highcharts 通过Socket.IO更新Sankey图表

Highcharts 通过Socket.IO更新Sankey图表,highcharts,socket.io,Highcharts,Socket.io,我想在新实体通过socket.io套接字到达时更新我的sankey图表实体。套接字发送的数据是[sender,receiver,amount],因此我拥有使用Highcharts的sankey所需的所有参数。我确信收到的数据 我添加了一个函数来执行此操作,但它无法生成任何内容 <script> var render = Highcharts.chart('container', { title: { text: 'Rea

我想在新实体通过socket.io套接字到达时更新我的sankey图表实体。套接字发送的数据是[sender,receiver,amount],因此我拥有使用Highcharts的sankey所需的所有参数。我确信收到的数据

我添加了一个函数来执行此操作,但它无法生成任何内容

<script>
    var render = Highcharts.chart('container', {
            title: {
                text: 'Real Time Chart'
            },

            chart: {
                type: 'sankey',
                renderTo: 'container',
                events: {
                    load: function() {
                        var socket = io.connect();
                        var series = this.series;
                        socket.on('message', function(data){
                            console.log(data);
                            series.addPoint([data.sender, data.receiver, data.amount], true, true);
                        });
                    }
                }
            },

            series: [{
                type: 'sankey',
                name: 'Initial data',
                keys: ['sender','receiver','amount'],
                data: (function() {
                    // generate some points to render before real samples arrive from feed
                    var data = []   
                    data.push({
                        sender: 'Brazil',
                        receiver: 'Portugal',
                        amount: 50
                    });
            return data;
        })()
    }]
});

    </script>

var render=Highcharts.chart('容器'{
标题:{
文本:“实时图表”
},
图表:{
键入:“sankey”,
renderTo:'容器',
活动:{
加载:函数(){
var socket=io.connect();
var系列=本系列;
socket.on('message',函数(数据){
控制台日志(数据);
series.addPoint([data.sender,data.receiver,data.amount],true,true);
});
}
}
},
系列:[{
键入:“sankey”,
名称:'初始数据',
关键字:[“发件人”、“收件人”、“金额”],
数据:(函数(){
//在真实样本从源到达之前生成一些要渲染的点
var数据=[]
数据推送({
发件人:“巴西”,
接收人:“葡萄牙”,
金额:50
});
返回数据;
})()
}]
});

我希望动态更新图表。

您不能对对象使用
属性。您需要使用Highcharts系列所需的格式:

series: [{
    ...,
    data: (function() {
        // generate some points to render before real samples arrive from feed
        var data = []
        data.push({
            from: 'Brazil',
            to: 'Portugal',
            weight: 50
        });
        return data;
    })()
}]
现场演示:

API参考:


您不能对对象使用
属性。您需要使用Highcharts系列所需的格式:

series: [{
    ...,
    data: (function() {
        // generate some points to render before real samples arrive from feed
        var data = []
        data.push({
            from: 'Brazil',
            to: 'Portugal',
            weight: 50
        });
        return data;
    })()
}]
现场演示:

API参考:


感谢您的澄清。非常感谢。通过socket.io进行实时更新有什么建议吗?我正在尝试向系列中添加新数据,以便随着时间的推移使用新数据为highchart制作动画,但无法进行此操作。Hi@Abhishek Malik,请尝试使用以下代码:
.addPoint({from:data.sender,to:data.receiver,weight:data.amount})
。如果这没有帮助,请向我提供您接收到的数据的示例(
console.log(data);
在“message”事件中)。感谢您的澄清。非常感谢。通过socket.io进行实时更新有什么建议吗?我正在尝试向系列中添加新数据,以便随着时间的推移使用新数据为highchart制作动画,但无法进行此操作。Hi@Abhishek Malik,请尝试使用以下代码:
.addPoint({from:data.sender,to:data.receiver,weight:data.amount})
。如果这没有帮助,请向我提供您接收到的数据的示例(
console.log(data);
在“message”事件中)。