如何使用字典存储的RGB值设置HoloViews Chord弦图的弧段颜色
解决方案
完全可以使用你定义的color_dict自定义Chord弦图的弧段颜色,只需要两步调整即可实现:
- 先将
color_dict中的RGB字符串转换为数值元组,生成HoloViews可识别的颜色映射字典 - 替换
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
相关产品推荐
相关产品推荐

