You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Holoviews和Bokeh绘制指定数据的桑基图?

使用Holoviews + Bokeh绘制指定样式桑基图

实现步骤

1. 安装并导入依赖库

先确保安装所需工具包:

pip install holoviews bokeh pandas

导入核心库:

import pandas as pd
import holoviews as hv
from bokeh.io import show
hv.extension('bokeh')

2. 准备并清洗数据

将你提供的表格数据转为DataFrame,并清理“来源”列的冗余数字与空格:

# 原始数据
raw_data = [
    ["22       SPHYRNIDAE", "CE", 3, "Critically Endangered"],
    ["27        TRIAKIDAE", "CE", 5, "Critically Endangered"],
    ["67       DASYATIDAE", "CE", 2, "Critically Endangered"],
    ["14   CARCHARHINIDAE", "CE", 4, "Critically Endangered"],
    ["62    UROTRYGONIDAE", "CE", 2, "Critically Endangered"]
]

# 转为DataFrame并清洗来源列
df = pd.DataFrame(raw_data, columns=["来源", "目标", "数值", "链接类别"])
df["来源"] = df["来源"].str.replace(r'^\d+\s+', '', regex=True).str.strip()

3. 构建并自定义桑基图

利用Holoviews的Sankey组件生成图表,并调整样式匹配参考图:

# 初始化桑基图
sankey_plot = hv.Sankey(df, kdims=["来源", "目标"], vdims=["数值", "链接类别"])

# 自定义样式参数
sankey_plot = sankey_plot.opts(
    # 按链接类别统一着色
    color=hv.Cycle('链接类别'),
    # 节点标签样式调整
    node_label_font_size='12pt',
    node_label_color='black',
    node_fill_alpha=0.9,
    # 链接视觉优化
    edge_line_width=0,
    edge_alpha=0.7,
    # 图表布局与标题
    width=800,
    height=500,
    title="软骨鱼类科濒危等级分布",
    title_font_size='14pt',
    # 按需隐藏图例
    legend_position='none'
)

# 渲染展示图表
show(hv.render(sankey_plot))

关键细节说明

  • 数据清洗:移除“来源”列开头的数字与冗余空格,让节点标签更简洁;
  • 颜色映射:通过hv.Cycle('链接类别')实现同类别链接颜色统一,匹配参考图的分类着色逻辑;
  • 样式微调:若参考图有节点颜色、布局方向等特殊要求,可额外添加node_fill_color、orientation等参数调整。

内容的提问来源于stack exchange,提问作者Sajna v.h

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 15:07:37