pyecharts简单实现桑吉图

桑吉图的简单实现

主要用到的工具函数

import pandas as pd 
from pyecharts.charts import Sankey
import pyecharts.options as opts
dt = pd.read_excel("C:/Users/ganyu/Desktop/ceshi.xlsx")

数据的样子
pyecharts简单实现桑吉图_第1张图片
一共要将原始数据处理成两份桑吉图专用的数据。
一份是所有的节点数据,另一份是所有的连接的线数据

nodes = []
d1 = pd.concat([dt["source"],dt["target"]],ignore_index=True,axis=0)
d1 = pd.DataFrame(d1)
d1.drop_duplicates(inplace=True)
for name in d1.values:
    dic = {
     }
    dic["name"] = name[0]
    nodes.append(dic)
lines = []
for line in dt.values:
    dic = {
     }
    dic["source"] = line[1]
    dic["target"] = line[0]
    dic["value"] = line[2]
    lines.append(dic)
#增加个汇总的节点
nodes.append({
     "name":"total"})
lines.append({
     "source":"我你","target":"total","value":1200})

数据的处理结果:
节点nodes(要去重)
pyecharts简单实现桑吉图_第2张图片
联接links:从左到右顺序,source指向target
pyecharts简单实现桑吉图_第3张图片
制作桑吉图

c =(Sankey()
    .add("sankey",
        nodes=nodes,
        links=lines,
        linestyle_opt=opts.LineStyleOpts(opacity=0.5,width=1,curve=0.6,color="source"),
        label_opts=opts.LabelOpts(position="left"),
        )
     .set_global_opts(title_opts=opts.TitleOpts(title="桑吉图示例"))
     #.render("sankey_base2.html")
    )
c.render_notebook()#在notebook上显示

pyecharts简单实现桑吉图_第4张图片
图形个性化设置http://pyecharts.org/#/zh-cn/

你可能感兴趣的:(可视化,数据可视化,python)