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

如何使用字典存储的RGB值设置HoloViews Chord弦图的弧段颜色

解决方案

完全可以使用你定义的color_dict自定义Chord弦图的弧段颜色,只需要两步调整即可实现:

  1. 先将color_dict中的RGB字符串转换为数值元组,生成HoloViews可识别的颜色映射字典
  2. 替换opts.Chord中的调色板参数为自定义的颜色映射

以下是修改后的完整可运行代码:

import pandas as pd
import numpy as np
from holoviews import opts, dim
import holoviews as hv
hv.extension('bokeh')
hv.output(size=200)

my_dict = {'khaki': {'khaki': 21, 'mediumslateblue': 22, 'lightgreen': 15, 'lightcoral': 13}, 
           'mediumslateblue': {'khaki': 23, 'mediumslateblue': 13, 'lightgreen': 4, 'lightcoral': 21}, 
           'lightgreen': {'khaki': 23, 'mediumslateblue': 16, 'lightgreen': 10, 'lightcoral': 9}, 
           'lightcoral': {'khaki': 4, 'mediumslateblue': 10, 'lightgreen': 29, 'lightcoral': 9}}
color_dict = {'Color': {0: '(252, 255, 104)', 1: '(104, 107, 255)', 2: '(104, 255, 119)', 3: '(255, 104, 129)'}, 
              'ColorName': {0: 'khaki', 1: 'mediumslateblue', 2: 'lightgreen', 3: 'lightcoral'}}

df = pd.DataFrame(my_dict)
df_colors = pd.DataFrame(color_dict)

# 生成自定义颜色映射:把RGB字符串转成整数元组
custom_cmap = {}
for _, row in df_colors.iterrows():
    rgb = tuple(map(int, row['Color'].strip('()').split(',')))
    custom_cmap[row['ColorName']] = rgb

data = hv.Dataset((list(df.columns), list(df.index), df),['source', 'target'], 'value').dframe()
chord = hv.Chord(data)

# 替换cmap和edge_cmap为自定义颜色映射
chord.opts(
    opts.Chord(cmap=custom_cmap, edge_cmap=custom_cmap, edge_color=dim('source').str(), 
               label_index='index', node_color=dim('index').str()))

运行上述代码后,Chord图的弧段、连接线颜色都会和你定义的RGB值一一对应,完全匹配你给出的颜色名称规则。


内容的提问来源于stack exchange,提问作者Richard

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 01:24:03