# coding=utf-8 import json import os from example.commons import Collector from pyecharts import options as opts from pyecharts.charts import Page, Sankey C = Collector() @C.funcs def sankey_base() -> Sankey: nodes = [ {"name": "category1"}, {"name": "category2"}, {"name": "category3"}, {"name": "category4"}, {"name": "category5"}, {"name": "category6"}, ] links = [ {"source": "category1", "target": "category2", "value": 10}, {"source": "category2", "target": "category3", "value": 15}, {"source": "category3", "target": "category4", "value": 20}, {"source": "category5", "target": "category6", "value": 25}, ] c = ( Sankey() .add( "sankey", nodes, links, linestyle_opt=opts.LineStyleOpts(opacity=0.2, curve=0.5, color="source"), label_opts=opts.LabelOpts(position="right"), ) .set_global_opts(title_opts=opts.TitleOpts(title="Sankey-基本示例")) ) return c @C.funcs def sankey_offical() -> Sankey: with open(os.path.join("fixtures", "energy.json"), "r", encoding="utf-8") as f: j = json.load(f) c = ( Sankey() .add( "sankey", nodes=j["nodes"], links=j["links"], linestyle_opt=opts.LineStyleOpts(opacity=0.2, curve=0.5, color="source"), label_opts=opts.LabelOpts(position="right"), ) .set_global_opts(title_opts=opts.TitleOpts(title="Sankey-官方示例")) ) return c Page().add(*[fn() for fn, _ in C.charts]).render()