请教:如何用js将数据转换为桑基图数据?

请教:python环境下生成下图数据,想用这个数据用echarts绘出桑基图(见后面的链接),对js不熟悉,请教这个数据如何才能转为echarts样例中的数据?

捕获1.JPG
df格式是这样的:
捕获2.JPG

数据对应:
5.png

数据文本:
[{'time': '14:56:43', 'nnt': 'str1', 'name': 'M07', 'type': 'A'},
{'time': '14:56:43', 'nnt': 'str3', 'name': 'M01', 'type': 'A'},
{'time': '14:56:43', 'nnt': 'str1', 'name': 'M05', 'type': 'B'},
{'time': '14:56:43', 'nnt': 'str5', 'name': 'M08', 'type': 'B'},
{'time': '14:56:43', 'nnt': 'str3', 'name': 'M06', 'type': 'A'},
{'time': '14:56:43', 'nnt': 'str5', 'name': 'M04', 'type': 'A'},
{'time': '14:56:43', 'nnt': 'str1', 'name': 'M06', 'type': 'C'},
{'time': '14:56:43', 'nnt': 'str1', 'name': 'M00', 'type': 'A'},
{'time': '14:56:43', 'nnt': 'str1', 'name': 'M04', 'type': 'C'},
{'time': '14:56:43', 'nnt': 'str1', 'name': 'M05', 'type': 'B'},
{'time': '14:56:48', 'nnt': 'str1', 'name': 'M07', 'type': 'A'},
{'time': '14:56:48', 'nnt': 'str3', 'name': 'M01', 'type': 'A'},
{'time': '14:56:48', 'nnt': 'str1', 'name': 'M05', 'type': 'B'},
{'time': '14:56:48', 'nnt': 'str5', 'name': 'M08', 'type': 'B'},
{'time': '14:56:48', 'nnt': 'str3', 'name': 'M06', 'type': 'A'},
{'time': '14:56:48', 'nnt': 'str5', 'name': 'M04', 'type': 'A'},
{'time': '14:56:48', 'nnt': 'str1', 'name': 'M06', 'type': 'C'},
{'time': '14:56:48', 'nnt': 'str1', 'name': 'M00', 'type': 'A'},
{'time': '14:56:48', 'nnt': 'str1', 'name': 'M04', 'type': 'C'},
{'time': '14:56:48', 'nnt': 'str1', 'name': 'M05', 'type': 'B'},
{'time': '14:56:53', 'nnt': 'str1', 'name': 'M07', 'type': 'A'},
{'time': '14:56:53', 'nnt': 'str3', 'name': 'M01', 'type': 'A'},
{'time': '14:56:53', 'nnt': 'str1', 'name': 'M05', 'type': 'B'},
{'time': '14:56:53', 'nnt': 'str5', 'name': 'M08', 'type': 'B'},
{'time': '14:56:53', 'nnt': 'str3', 'name': 'M06', 'type': 'A'},
{'time': '14:56:53', 'nnt': 'str5', 'name': 'M04', 'type': 'A'},
{'time': '14:56:53', 'nnt': 'str1', 'name': 'M06', 'type': 'C'},
{'time': '14:56:53', 'nnt': 'str1', 'name': 'M00', 'type': 'A'},
{'time': '14:56:53', 'nnt': 'str1', 'name': 'M04', 'type': 'C'},
{'time': '14:56:53', 'nnt': 'str1', 'name': 'M05', 'type': 'B'}]

桑基图样例:
https://www.echartsjs.com/exa...

https://www.echartsjs.com/exa...

阅读 2.5k
1 个回答

image.png

可以看到他需要的是 sourcetargetvalue


image.png

大概就是下面这么个意思吧。
遍历,给点加颜色,放入data。已存在的点就不push了。
遍历把线放到links。已存在的点value++,就不push了。

data = [];
dataHash = {};
links = [];
linksHash = {};
[{'time': '14:56:43', 'nnt': 'str1', 'name': 'M07', 'type': 'A'},
{'time': '14:56:43', 'nnt': 'str3', 'name': 'M01', 'type': 'A'},
{'time': '14:56:43', 'nnt': 'str1', 'name': 'M05', 'type': 'B'},
{'time': '14:56:43', 'nnt': 'str5', 'name': 'M08', 'type': 'B'},
{'time': '14:56:43', 'nnt': 'str3', 'name': 'M06', 'type': 'A'},
{'time': '14:56:43', 'nnt': 'str5', 'name': 'M04', 'type': 'A'},
{'time': '14:56:43', 'nnt': 'str1', 'name': 'M06', 'type': 'C'},
{'time': '14:56:43', 'nnt': 'str1', 'name': 'M00', 'type': 'A'},
{'time': '14:56:43', 'nnt': 'str1', 'name': 'M04', 'type': 'C'},
{'time': '14:56:43', 'nnt': 'str1', 'name': 'M05', 'type': 'B'},
{'time': '14:56:48', 'nnt': 'str1', 'name': 'M07', 'type': 'A'},
{'time': '14:56:48', 'nnt': 'str3', 'name': 'M01', 'type': 'A'},
{'time': '14:56:48', 'nnt': 'str1', 'name': 'M05', 'type': 'B'},
{'time': '14:56:48', 'nnt': 'str5', 'name': 'M08', 'type': 'B'},
{'time': '14:56:48', 'nnt': 'str3', 'name': 'M06', 'type': 'A'},
{'time': '14:56:48', 'nnt': 'str5', 'name': 'M04', 'type': 'A'},
{'time': '14:56:48', 'nnt': 'str1', 'name': 'M06', 'type': 'C'},
{'time': '14:56:48', 'nnt': 'str1', 'name': 'M00', 'type': 'A'},
{'time': '14:56:48', 'nnt': 'str1', 'name': 'M04', 'type': 'C'},
{'time': '14:56:48', 'nnt': 'str1', 'name': 'M05', 'type': 'B'},
{'time': '14:56:53', 'nnt': 'str1', 'name': 'M07', 'type': 'A'},
{'time': '14:56:53', 'nnt': 'str3', 'name': 'M01', 'type': 'A'},
{'time': '14:56:53', 'nnt': 'str1', 'name': 'M05', 'type': 'B'},
{'time': '14:56:53', 'nnt': 'str5', 'name': 'M08', 'type': 'B'},
{'time': '14:56:53', 'nnt': 'str3', 'name': 'M06', 'type': 'A'},
{'time': '14:56:53', 'nnt': 'str5', 'name': 'M04', 'type': 'A'},
{'time': '14:56:53', 'nnt': 'str1', 'name': 'M06', 'type': 'C'},
{'time': '14:56:53', 'nnt': 'str1', 'name': 'M00', 'type': 'A'},
{'time': '14:56:53', 'nnt': 'str1', 'name': 'M04', 'type': 'C'},
{'time': '14:56:53', 'nnt': 'str1', 'name': 'M05', 'type': 'B'}].forEach(v=>{
    var item = dataHash[v.nnt];
    if(!item){
        var color = '#'+String(0xffffff*Math.random()>>0).padStart(6,'0')
        dataHash[v.nnt] = item = {
            "name": v.nnt,
            "itemStyle": {"normal": {"color": color,"borderColor": color}}
        }
        data.push(item)
    }
    links.push({
        "source": v.nnt,
        "target": v.type,
        "value": 1
    })


    var item = dataHash[v.type];
    if(!item){
        var color = '#'+String(0xffffff*Math.random()>>0).padStart(6,'0')
        dataHash[v.type] = item = {
            "name": v.type,
            "itemStyle": {"normal": {"color": color,"borderColor": color}}
        }
        data.push(item)
    }
    links.push({
        "source": v.type,
        "target": v.name,
        "value": 1
    })


    var item = dataHash[v.name];
    if(!item){
        var color = '#'+String(0xffffff*Math.random()>>0).padStart(6,'0')
        dataHash[v.name] = item = {
            "name": v.name,
            "itemStyle": {"normal": {"color": color,"borderColor": color}}
        }
        data.push(item)
    }
    links.push({
        "source": v.name,
        "target": v.time,
        "value": 1
    })
})
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏