1. 桑基图的前世今生:从能源流动到数据可视化
桑基图(Sankey Diagram)最早由爱尔兰船长Matthew Henry Phineas Riall Sankey在1898年提出,用于描述蒸汽机的能量流动效率。这种图表通过箭头的宽度直观展示流量大小,特别适合表现能量、物质或资金的流转过程。在数据可视化领域,桑基图已经成为分析多维度转化关系的利器。
提示:桑基图的核心价值在于展示"流量守恒"——所有流入节点的总量等于流出总量,这种特性使其在供应链分析、用户行为路径追踪等场景中具有不可替代性。
在Python生态中,pyecharts是基于ECharts的封装库,它让创建交互式桑基图变得异常简单。相比Matplotlib等传统库,pyecharts生成的图表支持:
- 动态悬停查看数值详情
- 节点拖拽重新布局
- 自适应不同屏幕尺寸
- 丰富的主题定制选项
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 环境准备与pyecharts安装
2.1 Python环境配置建议
虽然pyecharts支持Python 3.6+,但我强烈推荐使用Python 3.8+环境,这是经过大量项目验证的稳定版本组合。以下是两种推荐的安装方式:
方案一:使用conda创建独立环境
bash复制conda create -n sankey python=3.8
conda activate sankey
pip install pyecharts
方案二:直接pip安装(全局环境)
bash复制python -m pip install --upgrade pip
pip install pyecharts
注意:如果遇到"请安装缺失的包以使用此工作流"的提示,通常是因为依赖冲突。建议先卸载旧版本:
bash复制pip uninstall pyecharts echarts-countries-pypkg echarts-china-provinces-pypkg
2.2 验证安装与版本检查
安装完成后,运行以下代码验证环境:
python复制import pyecharts
print(f"pyecharts版本: {pyecharts.__version__}") # 需要≥1.9.0
from pyecharts.globals import CurrentConfig
print(CurrentConfig.ONLINE_HOST) # 确认离线资源路径
如果需要在Jupyter Notebook中显示图表,还需安装:
bash复制pip install jupyter notebook
3. 基础桑基图实战:电商用户行为分析
3.1 构建最小可行案例
假设我们要分析用户在电商平台的典型行为路径:首页→搜索→商品页→购物车→支付。以下是完整实现代码:
python复制from pyecharts import options as opts
from pyecharts.charts import Sankey
nodes = [
{"name": "首页"},
{"name": "搜索"},
{"name": "商品页"},
{"name": "购物车"},
{"name": "支付"}
]
links = [
{"source": "首页", "target": "搜索", "value": 10000},
{"source": "搜索", "target": "商品页", "value": 8000},
{"source": "商品页", "target": "购物车", "value": 5000},
{"source": "购物车", "target": "支付", "value": 3000},
{"source": "商品页", "target": "支付", "value": 1000} # 直接购买场景
]
sankey = (
Sankey()
.add(
series_name="用户路径",
nodes=nodes,
links=links,
linestyle_opt=opts.LineStyleOpts(opacity=0.3, curve=0.5, color="source"),
label_opts=opts.LabelOpts(position="right"),
)
.set_global_opts(title_opts=opts.TitleOpts(title="电商用户行为桑基图"))
)
sankey.render("basic_sankey.html") # 生成HTML文件
3.2 关键参数解析
nodes数据结构要点:
- 每个节点必须有唯一"name"
- 可通过"depth"指定层级(默认为自动计算)
- 使用"itemStyle"自定义节点颜色
links核心属性:
- "source"和"target"必须对应nodes中的name
- "value"决定连线宽度,建议使用实际业务数据
- 可添加"lineStyle"单独设置连线样式
布局优化技巧:
python复制.set_global_opts(
tooltip_opts=opts.TooltipOpts(trigger="item", trigger_on="mousemove"),
toolbox_opts=opts.ToolboxOpts(
feature=opts.ToolBoxFeatureOpts(
save_as_image=opts.ToolBoxFeatureSaveAsImageOpts(title="保存图片"),
restore=opts.ToolBoxFeatureRestoreOpts(title="重置视图")
)
)
)
4. 高级应用:多维度数据映射
4.1 动态数据更新方案
实际业务中常需要处理动态数据流。以下是结合Pandas的自动化处理示例:
python复制import pandas as pd
# 模拟用户行为日志
data = pd.DataFrame([
["首页", "搜索", 12000],
["搜索", "商品页", 9500],
["商品页", "购物车", 6000],
["购物车", "支付", 3500],
["商品页", "支付", 1500]
], columns=["source", "target", "value"])
# 自动生成nodes
nodes = list(set(data["source"].unique().tolist() + data["target"].unique().tolist()))
nodes = [{"name": name} for name in nodes]
# 转换links格式
links = data.to_dict("records")
sankey = (
Sankey()
.add(
series_name="动态数据",
nodes=nodes,
links=links,
node_gap=10, # 节点间距
node_align="justify" # 节点对齐方式
)
)
4.2 多级嵌套桑基图实现
对于复杂业务场景(如供应链管理),可能需要展示多级流转关系:
python复制nodes = [
{"name": "原材料供应商"},
{"name": "生产工厂"},
{"name": "区域仓库"},
{"name": "省级仓库"},
{"name": "零售门店"},
{"name": "线上渠道"}
]
links = [
{"source": "原材料供应商", "target": "生产工厂", "value": 500},
{"source": "生产工厂", "target": "区域仓库", "value": 450},
{"source": "区域仓库", "target": "省级仓库", "value": 400},
{"source": "省级仓库", "target": "零售门店", "value": 300},
{"source": "省级仓库", "target": "线上渠道", "value": 100},
{"source": "生产工厂", "target": "线上渠道", "value": 50} # 直营渠道
]
sankey = (
Sankey()
.add(
series_name="供应链",
nodes=nodes,
links=links,
levels=[
opts.SankeyLevelsOpts(depth=0, itemstyle_opts=opts.ItemStyleOpts(color="#F7B733")),
opts.SankeyLevelsOpts(depth=1, itemstyle_opts=opts.ItemStyleOpts(color="#DFDCE3")),
opts.SankeyLevelsOpts(depth=2, itemstyle_opts=opts.ItemStyleOpts(color="#FC4A1A"))
],
pos_top="15%",
pos_bottom="15%"
)
)
5. 样式深度定制与交互优化
5.1 主题样式配置
pyecharts内置多种主题,快速切换只需:
python复制from pyecharts.globals import ThemeType
sankey = Sankey(init_opts=opts.InitOpts(
theme=ThemeType.DARK, # 可选:LIGHT, CHALK, ESSOS等
width="1200px",
height="800px"
))
自定义颜色方案示例:
python复制.add(
series_name="定制样式",
nodes=nodes,
links=links,
itemstyle_opts=opts.ItemStyleOpts(
border_width=1,
border_color="#aaa"
),
line_style=opts.LineStyleOpts(
color="gradient", # 渐变色连线
curveness=0.5
),
label_opts=opts.LabelOpts(
font_size=12,
font_family="Microsoft YaHei",
formatter="{b}: {c}" # 显示数值
)
)
5.2 交互功能增强
实现点击事件响应:
python复制sankey.on("click", function(params):
print(f"点击了{params.name}节点")
)
# 或者通过JavaScript回调
sankey.add_js_funcs("""
function(params) {
if(params.dataType === 'node') {
console.log('节点被点击:', params.name);
}
}
""")
添加数据筛选器:
python复制from pyecharts.components import Table
from pyecharts.options import ComponentTitleOpts
table = Table()
table.add(headers=["节点", "流入量", "流出量"], rows=[
["生产工厂", "500", "500"],
["区域仓库", "450", "400"]
])
sankey.page().add(table)
6. 性能优化与大数据处理
6.1 数据聚合策略
当处理超过1000条流转关系时,建议先进行数据聚合:
python复制# 使用Pandas进行预处理
agg_rules = {
"source": "first",
"target": "first",
"value": "sum"
}
grouped = data.groupby(["source", "target"]).agg(agg_rules).reset_index()
6.2 分片渲染技术
对于超大规模数据(节点>500),可采用分片加载:
python复制sankey.set_series_opts(
large=True,
large_threshold=200,
progressive=1000,
animation_opts=opts.AnimationOpts(
animation_threshold=2000
)
)
6.3 WebGL加速方案
启用硬件加速提升渲染性能:
python复制sankey.set_global_opts(
renderer="canvas", # 默认
# 或者使用WebGL加速
# renderer="svg" if nodes<300 else "canvas"
)
7. 常见问题排查手册
7.1 节点重叠解决方案
现象:节点挤在一起难以辨认
修复方案:
python复制.add(
node_width=20, # 节点宽度
node_gap=15, # 垂直间距
focus_node_adjacency=True, # 高亮关联
layout_iterations=64 # 布局迭代次数
)
7.2 数据不显示排查步骤
- 检查links中的source/target是否与nodes的name完全匹配(包括大小写)
- 验证value是否为数值类型(非字符串)
- 查看浏览器控制台是否有JavaScript错误
- 确保render()输出的HTML文件路径可访问
7.3 中文显示异常处理
设置全局字体:
python复制from pyecharts.globals import ThemeType
sankey.set_global_opts(
title_opts=opts.TitleOpts(
title="中文标题",
subtitle="副标题",
title_textstyle_opts=opts.TextStyleOpts(
font_family="Microsoft YaHei"
)
)
)
或者在InitOpts中全局设置:
python复制InitOpts(
theme=ThemeType.LIGHT,
chart_id=None,
bg_color=None,
js_host="",
width="900px",
height="600px",
page_title="页面标题",
animation_opts=AnimationOpts(),
renderer="canvas",
theme_thème=None,
host=None,
is_horizontal_center=False,
is_animation=False,
is_fill_bg=False,
is_toolbox_show=True,
is_legend_show=True,
is_more_utils=False,
is_data_zoom_show=False,
is_visual_map_show=False,
is_brush_show=False,
is_geo_show=False,
is_calendar_show=False,
is_parallel_show=False,
is_single_axis_show=False,
is_graph_show=False,
is_timeline_show=False,
is_radar_show=False,
is_tree_show=False,
is_sunburst_show=False,
is_treemap_show=False,
is_custom_show=False,
is_polar_show=False,
is_radius_axis_show=False,
is_angle_axis_show=False,
is_radar_indicator_show=False,
is_legend_scroll=False,
is_legend_hover_link=False,
is_legend_selected_mode="multiple",
is_legend_pos="right",
is_legend_orient="vertical",
is_legend_text_color="#000",
is_legend_text_font_size=12,
is_legend_text_font_weight="normal",
is_legend_text_font_style="normal",
is_legend_text_font_family="sans-serif",
is_legend_text_line_height=None,
is_legend_text_align=None,
is_legend_text_vertical_align=None,
is_legend_text_background_color=None,
is_legend_text_border_color=None,
is_legend_text_border_width=None,
is_legend_text_border_radius=None,
is_legend_text_padding=None,
is_legend_text_shadow_color=None,
is_legend_text_shadow_blur=None,
is_legend_text_shadow_offset_x=None,
is_legend_text_shadow_offset_y=None,
is_legend_text_width=None,
is_legend_text_height=None,
is_legend_text_rich=None,
is_legend_icon=None,
is_legend_item_gap=None,
is_legend_item_width=None,
is_legend_item_height=None,
is_legend_selected=None,
is_legend_inactive_color=None,
is_legend_selected_color=None,
is_legend_formatter=None,
is_legend_tooltip=None,
is_legend_emphasis=None,
is_legend_blur=None,
is_legend_select=None,
is_legend_unselect=None,
is_legend_toggle_select=None,
is_legend_inverse=None,
is_legend_scroll_data_index=None,
is_legend_scroll_data_length=None,
is_legend_page_button_item_size=None,
is_legend_page_button_gap=None,
is_legend_page_button_position=None,
is_legend_page_formatter=None,
is_legend_page_text_style=None,
is_legend_page_icon=None,
is_legend_page_emphasis=None,
is_legend_page_blur=None,
is_legend_page_select=None,
is_legend_page_unselect=None,
is_legend_page_toggle_select=None,
is_legend_page_inverse=None,
is_legend_page_scroll_data_index=None,
is_legend_page_scroll_data_length=None,
is_legend_page_page_button_item_size=None,
is_legend_page_page_button_gap=None,
is_legend_page_page_button_position=None,
is_legend_page_page_formatter=None,
is_legend_page_page_text_style=None,
is_legend_page_page_icon=None,
is_legend_page_page_emphasis=None,
is_legend_page_page_blur=None,
is_legend_page_page_select=None,
is_legend_page_page_unselect=None,
is_legend_page_page_toggle_select=None,
is_legend_page_page_inverse=None,
is_legend_page_page_scroll_data_index=None,
is_legend_page_page_scroll_data_length=None,
is_legend_page_page_page_button_item_size=None,
is_legend_page_page_page_button_gap=None,
is_legend_page_page_page_button_position=None,
is_legend_page_page_page_formatter=None,
is_legend_page_page_page_text_style=None,
is_legend_page_page_page_icon=None,
is_legend_page_page_page_emphasis=None,
is_legend_page_page_page_blur=None,
is_legend_page_page_page_select=None,
is_legend_page_page_page_unselect=None,
is_legend_page_page_page_toggle_select=None,
is_legend_page_page_page_inverse=None,
is_legend_page_page_page_scroll_data_index=None,
is_legend_page_page_page_scroll_data_length=None,
is_legend_page_page_page_page_button_item_size=None,
is_legend_page_page_page_page_button_gap=None,
is_legend_page_page_page_page_button_position=None,
is_legend_page_page_page_page_formatter=None,
is_legend_page_page_page_page_text_style=None,
is_legend_page_page_page_page_icon=None,
is_legend_page_page_page_page_emphasis=None,
is_legend_page_page_page_page_blur=None,
is_legend_page_page_page_page_select=None,
is_legend_page_page_page_page_unselect=None,
is_legend_page_page_page_page_toggle_select=None,
is_legend_page_page_page_page_inverse=None,
is_legend_page_page_page_page_scroll_data_index=None,
is_legend_page_page_page_page_scroll_data_length=None,
is_legend_page_page_page_page_page_button_item_size=None,
is_legend_page_page_page_page_page_button_gap=None,
is_legend_page_page_page_page_page_button_position=None,
is_legend_page_page_page_page_page_formatter=None,
is_legend_page_page_page_page_page_text_style=None,
is_legend_page_page_page_page_page_icon=None,
is_legend_page_page_page_page_page_emphasis=None,
is_legend_page_page_page_page_page_blur=None,
is_legend_page_page_page_page_page_select=None,
is_legend_page_page_page_page_page_unselect=None,
is_legend_page_page_page_page_page_toggle_select=None,
is_legend_page_page_page_page_page_inverse=None,
is_legend_page_page_page_page_page_scroll_data_index=None,
is_legend_page_page_page_page_page_scroll_data_length=None,
is_legend_page_page_page_page_page_page_button_item_size=None,
is_legend_page_page_page_page_page_page_button_gap=None,
is_legend_page_page_page_page_page_page_button_position=None,
is_legend_page_page_page_page_page_page_formatter=None,
is_legend_page_page_page_page_page_page_text_style=None,
is_legend_page_page_page_page_page_page_icon=None,
is_legend_page_page_page_page_page_page_emphasis=None,
is_legend_page_page_page_page_page_page_blur=None,
is_legend_page_page_page_page_page_page_select=None,
is_legend_page_page_page_page_page_page_unselect=None,
is_legend_page_page_page_page_page_page_toggle_select=None,
is_legend_page_page_page_page_page_page_inverse=None,
is_legend_page_page_page_page_page_page_scroll_data_index=None,
is_legend_page_page_page_page_page_page_scroll_data_length=None,
is_legend_page_page_page_page_page_page_page_button_item_size=None,
is_legend_page_page_page_page_page_page_page_button_gap=None,
is_legend_page_page_page_page_page_page_page_button_position=None,
is_legend_page_page_page_page_page_page_page_formatter=None,
is_legend_page_page_page_page_page_page_page_text_style=None,
is_legend_page_page_page_page_page_page_page_icon=None,
is_legend_page_page_page_page_page_page_page_emphasis=None,
is_legend_page_page_page_page_page_page_page_blur=None,
is_legend_page_page_page_page_page_page_page_select=None,
is_legend_page_page_page_page_page_page_page_unselect=None,
is_legend_page_page_page_page_page_page_page_toggle_select=None,
is_legend_page_page_page_page_page_page_page_inverse=None,
is_legend_page_page_page_page_page_page_page_scroll_data_index=None,
is_legend_page_page_page_page_page_page_page_scroll_data_length=None,
is_legend_page_page_page_page_page_page_page_page_button_item_size=None,
is_legend_page_page_page_page_page_page_page_page_button_gap=None,
is_legend_page_page_page_page_page_page_page_page_button_position=None,
is_legend_page_page_page_page_page_page_page_page_formatter=None,
is_legend_page_page_page_page_page_page_page_page_text_style=None,
is_legend_page_page_page_page_page_page_page_page_icon=None,
is_legend_page_page_page_page_page_page_page_page_emphasis=None,
is_legend_page_page_page_page_page_page_page_page_blur=None,
is_legend_page_page_page_page_page_page_page_page_select=None,
is_legend_page_page_page_page_page_page_page_page_unselect=None,
is_legend_page_page_page_page_page_page_page_page_toggle_select=None,
is_legend_page_page_page_page_page_page_page_page_inverse=None,
is_legend_page_page_page_page_page_page_page_page_scroll_data_index=None,
is_legend_page_page_page_page_page_page_page_page_scroll_data_length=None,
is_legend_page_page_page_page_page_page_page_page_page_button_item_size=None,
is_legend_page_page_page_page_page_page_page_page_page_button_gap=None,
is_legend_page_page_page_page_page_page_page_page_page_button_position=None,
is_legend_page_page_page_page_page_page_page_page_page_formatter=None,
is_legend_page_page_page_page_page_page_page_page_page_text_style=None,
is_legend_page_page_page_page_page_page_page_page_page_icon=None,
is_legend_page_page_page_page_page_page_page_page_page_emphasis=None,
is_legend_page_page_page_page_page_page_page_page_page_blur=None,
is_legend_page_page_page_page_page_page_page_page_page_select=None,
is_legend_page_page_page_page_page_page_page_page_page_unselect=None,
is_legend_page_page_page_page_page_page_page_page_page_toggle_select=None,
is_legend_page_page_page_page_page_page_page_page_page_inverse=None,
is_legend_page_page_page_page_page_page_page_page_page_scroll_data_index=None,
is_legend_page_page_page_page_page_page_page_page_page_scroll_data_length=None,
is_legend_page_page_page_page_page_page_page_page_page_page_button_item_size=None,
is_legend_page_page_page_page_page_page_page_page_page_page_button_gap=None,
is_legend_page_page_page_page_page_page_page_page_page_page_button_position=None,
is_legend_page_page_page_page_page_page_page_page_page_page_formatter=None,
is_legend_page_page_page_page_page_page_page_page_page_page_text_style=None,
is_legend_page_page_page_page_page_page_page_page_page_page_icon=None,
is_legend_page_page_page_page_page_page_page_page_page_page_emphasis=None,
is_legend_page_page_page_page_page_page_page_page_page_page_blur=None,
is_legend_page_page_page_page_page_page_page_page_page_page_select=None,
is_legend_page_page_page_page_page_page_page_page_page_page_unselect=None,
is_legend_page_page_page_page_page_page_page_page_page_page_toggle_select=None,
is_legend_page_page_page_page_page_page_page_page_page_page_inverse=None,
is_legend_page_page_page_page_page_page_page_page_page_page_scroll_data_index=None,
is_legend_page_page_page_page_page_page_page_page_page_page_scroll_data_length=None,
is_legend_page_page_page_page_page_page_page_page_page_page_page_button_item_size=None,
is_legend_page_page_page_page_page_page_page_page_page_page_page_button_gap=None,
is_legend_page_page_page_page_page_page_page_page_page_page_page_button_position=None,
is_legend_page_page_page_page_page_page_page_page_page_page_page_formatter=None,
is_legend_page_page_page_page_page_page_page_page_page_page_page_text_style=None,
is_legend_page_page_page_page_page_page_page_page_page_page_page_icon=None,
is_legend_page_page_page_page_page_page_page_page_page_page_page_emphasis=None,
is_legend_page_page_page_page_page_page_page_page_page_page_page_blur=None,
is_legend_page_page_page_page_page_page_page_page_page_page_page_select=None,
is_legend_page_page_page_page_page_page_page_page_page_page_page_unselect=None,
is_legend_page_page_page_page_page_page_page_page_page_page_page_toggle_select=None,
is_legend_page_page_page_page_page_page_page_page_page_page_page_inverse=None,
is_legend_page_page_page_page_page_page_page_page_page_page_page_scroll_data_index=None,
is_legend_page_page_page_page_page_page_page_page_page_page_page_scroll_data_length=None,
is_legend_page_page_page_page_page_page_page_page_page_page_page_page_button_item_size=None,
is_legend_page_page_page_page_page_page_page_page_page_page_page_page_button_gap=None,
is_legend_page_page_page_page_page_page_page_page_page_page_page_page_button_position=None,
is_legend_page_page_page_page_page_page_page_page_page_page_page_page_formatter=None,
is_legend_page_page_page_page_page_page_page_page_page_page_page_page_text_style=None,
is_legend_page_page_page_page_page_page_page_page_page_page_page_page_icon=None,
is_legend_page_page_page_page_page_page_page_page_page_page_page_page_emphasis=None,
is_legend_page_page_page_page_page_page_page_page_page_page_page_page_blur=None,
is_legend_page_page_page_page_page_page_page_page_page_page_page_page_select=None,
is_legend_page_page_page_page_page_page_page_page_page_page_page_page_unselect=None,
is_legend_page_page_page_page_page_page_page_page_page_page_page_page_toggle_select=None,
is_legend_page_page_page_page_page_page_page_page_page_page_page_page_inverse=None,
is_legend_page_page_page_page_page_page_page_page_page_page_page_page_scroll_data_index=None,
is_legend_page_page_page_page_page_page_page_page_page_page_page_page_scroll_data_length=None,
is_legend_page_page_page_page_page_page_page_page_page_page_page_page_page_button_item_size=None,
is_legend_page_page_page_page_page_page_page_page_page_page_page_page_page_button_gap=None,
is_legend_page_page_page_page_page_page_page_page_page_page_page_page_page_button_position=None,
is_legend_page_page_page_page_page_page_page_page_page_page_page_page_page_formatter=None,
is_legend_page_page_page_page_page_page_page_page_page_page_page_page_page_text_style=None,
is_legend_page_page_page_page_page_page_page_page_page_page_page_page_page_icon=None,
is_legend_page_page_page_page_page_page_page_page_page_page_page_page_page_emphasis=None,
is_legend_page_page_page_page_page_page_page_page_page_page_page_page_page_blur=None,
is_legend_page_page_page_page_page_page_page_page_page_page_page_page_page_select=None,
is_legend_page_page_page_page_page_page_page_page_page_page_page_page_page_unselect=None,
is_legend_page_page_page_page_page_page_page_page_page_page_page_page_page_toggle_select=None,
is_legend_page_page_page_page_page_page_page_page_page_page_page_page_page_inverse=None,
is_legend_page_page_page_page_page_page_page_page_page_page_page_page_page_scroll_data_index=None,
is_legend_page_page_page_page_page_page_page_page_page_page_page_page_page_scroll_data_length=None,
is_legend_page_page_page_page_page_page_page_page_page_page_page_page_page_page_button_item_size=None,
is_legend_page_page_page_page_page_page_page_page_page_page_page_page_page_page_button_gap=None,
is_legend_page_page_page_page_page_page_page_page_page_page_page_page_page_page_button_position=None,
is_legend_page_page_page_page_page_page_page_page_page_page_page_page_page_page_formatter=None,
is_legend_page_page_page_page_page_page_page_page_page_page_page_page_page_page_text_style=None,
is_legend_page_page_page_page_page_page_page_page_page_page_page_page_page_page_icon=None,
is_legend_page_page_page_page_page_page_page_page_page_page_page_page_page_page_emphasis=None,
is_legend_page_page_page_page_page_page_page_page_page_page_page_page_page_page_blur=None,
is_legend_page_page_page_page_page_page_page_page_page_page_page_page_page_page_select=None,
is_legend_page_page_page_page_page_page_page_page_page_page_page_page_page_page_unselect=None,
is_legend_page_page_page_page_page_page_page_page_page_page_page_page_page_page_toggle_select=None,
is_legend_page_page_page_page_page_page_page_page_page_page_page_page_page_page_inverse=None,
is_legend_page_page_page_page_page_page_page_page_page_page_page_page_page_page_scroll_data_index=None,
is_legend_page_page_page_page_page_page_page_page_page_page_page_page_page_page_scroll_data_length=None,
is_legend_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_button_item_size=None,
is_legend_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_button_gap=None,
is_legend_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_button_position=None,
is_legend_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_formatter=None,
is_legend_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_text_style=None,
is_legend_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_icon=None,
is_legend_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_emphasis=None,
is_legend_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_blur=None,
is_legend_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_select=None,
is_legend_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_unselect=None,
is_legend_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_toggle_select=None,
is_legend_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_inverse=None,
is_legend_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_scroll_data_index=None,
is_legend_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_scroll_data_length=None,
is_legend_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_button_item_size=None,
is_legend_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_button_gap=None,
is_legend_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_button_position=None,
is_legend_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_formatter=None,
is_legend_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_text_style=None,
is_legend_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_icon=None,
is_legend_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_emphasis=None,
is_legend_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_blur=None,
is_legend_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_select=None,
is_legend_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_unselect=None,
is_legend_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_toggle_select=None,
is_legend_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_inverse=None,
is_legend_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_scroll_data_index=None,
is_legend_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_scroll_data_length=None,
is_legend_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_button_item_size=None,
is_legend_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_button_gap=None,
is_legend_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_button_position=None,
is_legend_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_formatter=None,
is_legend_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_text_style=None,
is_legend_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_icon=None,
is_legend_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_emphasis=None,
is_legend_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_blur=None,
is_legend_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_select=None,
is_legend_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_unselect=None,
is_legend_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_toggle_select=None,
is_legend_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_inverse=None,
is_legend_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_scroll_data_index=None,
is_legend_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_scroll_data_length=None,
is_legend_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_button_item_size=None,
is_legend_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_button_gap=None,
is_legend_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_button_position=None,
is_legend_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_formatter=None,
is_legend_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_text_style=None,
is_legend_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_icon=None,
is_legend_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_emphasis=None,
is_legend_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_blur=None,
is_legend_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_select=None,
is_legend_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_unselect=None,
is_legend_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_toggle_select=None,
is_legend_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_inverse=None,
is_legend_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_scroll_data_index=None,
is_legend_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_scroll_data_length=None,
is_legend_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_button_item_size=None,
is_legend_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_button_gap=None,
is_legend_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_button_position=None,
is_legend_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_formatter=None,
is_legend_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_text_style=None,
is_legend_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_page_icon=None,
is_legend
