绘制如图所示出行路线迁徙(桑基图)补全代码(注意:请上传PDF文件,文件中包括程序和图片):
from pyecharts.charts import Sankey
from pyecharts import options as opts
import random
# 核心节点列表(名称严格匹配)
nodes = [
{"name": "住宅区"}, {"name": "商业区"}, {"name": "工业区"},
{"name": "交通枢纽"}, {"name": "学校区"},
{"name": "私家车"}, {"name": "公交"}, {"name": "地铁"},
{"name": "出租车"}, {"name": "共享单车"}
]
# 桑基图链接关系(确保无环),调整随机数取值范围
links = [
# 住宅区 → 私家车 → 学校区/商业区
{"source": "住宅区", "target": "私家车", "value": random.randint(300, 400)},
{"source": "私家车", "target": "学校区", "value": random.randint(100, 150)},
{"source": "私家车", "target": "商业区", "value": random.randint(150, 200)},
# 住宅区 → 公交 → 工业区 → 交通枢纽
{"source": "住宅区", "target": "公交", "value": random.randint(200, 300)},
{"source": "公交", "target": "工业区", "value": random.randint(100, 150)},
{"source": "工业区", "target": "交通枢纽", "value": random.randint(100, 150)},
# 住宅区 → 共享单车 → 学校区
{"source": "住宅区", "target": "共享单车", "value": random.randint(80, 120)},
{"source": "共享单车", "target": "学校区", "value": random.randint(80, 120)},
# 商业区 → 交通枢纽
{"source": "商业区", "target": "交通枢纽", "value": random.randint(200, 300)},
# 新增:住宅区 -> 地铁 -> 学校区
{"source": "住宅区", "target": "地铁", "value": random.randint(150, 250)},
{"source": "地铁", "target": "学校区", "value": random.randint(150, 250)},
# 新增:住宅区 -> 出租车 -> 商业区
{"source": "住宅区", "target": "出租车", "value": random.randint(80, 120)},
{"source": "出租车", "target": "商业区", "value": random.randint(80, 120)},
# 学校区直接到交通枢纽
{"source": "学校区", "target": "交通枢纽", "value": random.randint(150, 250)}
]