我试图在全息视图中创建一个分类热图。我的pandas数据帧看起来像这样:
defline msa alnpos loc pos clustal
236522 GCF_012184425_1_000000000010_4705 T 1151 O 420 #ffffff
236523 GCF_012184425_1_000000000010_4705 R 1152 O 421 #ffffff
236524 GCF_012184425_1_000000000010_4705 - 1153 - - #ffffff
236525 GCF_012184425_1_000000000010_4705 - 1154 - - #ffffff
236526 GCF_012184425_1_000000000010_4705 - 1155 - - #ffffff
236527 GCF_012184425_1_000000000010_4705 - 1156 - - #ffffff
236528 GCF_012184425_1_000000000010_4705 - 1157 - - #ffffff
236529 GCF_012184425_1_000000000010_4705 - 1158 - - #ffffff
236530 GCF_012184425_1_000000000010_4705 - 1159 - - #ffffff
236531 GCF_012184425_1_000000000010_4705 D 1160 B 422 #ffffff
236532 GCF_012184425_1_000000000010_4705 T 1161 B 423 #ffffff
236533 GCF_012184425_1_000000000010_4705 A 1162 B 424 #80a0f0
236534 GCF_012184425_1_000000000010_4705 A 1163 B 425 #ffffff
236535 GCF_012184425_1_000000000010_4705 L 1164 B 426 #80a0f0
236536 GCF_012184425_1_000000000010_4705 L 1165 B 427 #ffffff
236537 GCF_012184425_1_000000000010_4705 M 1166 B 428 #80a0f0
236538 GCF_012184425_1_000000000010_4705 Q 1167 B 429 #ffffff
236539 GCF_012184425_1_000000000010_4705 V 1168 B 430 #80a0f0
236540 GCF_012184425_1_000000000010_4705 D 1169 B 431 #ffffff
236541 GCF_012184425_1_000000000010_4705 F 1170 P 432 #80a0f0
我想
defline
在y轴上,
alnpos
在x轴上
clustal
即该位置热图单元的颜色。
库设置为:
import os
import sys
import argparse
import numpy as np
from itertools import islice
import pandas as pd
import bokeh.io
import bokeh.plotting
bokeh.io.output_notebook()
from bokeh.models import CategoricalColorMapper
from bokeh.models import HoverTool
import holoviews as hv
hv.extension('bokeh')
正在尝试
hv.HeatMap(data=alignment_df, kdims=['alnpos','defline'], vdims=['clustal'])
导致颜色映射错误:
failed to validate LinearColorMapper(id='2912aef4-31cd-46e6-b9e2-635da2a8556b', ...).low: expected either None or a value of type Float, got '#14a4a4'
因此,我使用以下命令创建了一个将颜色十六进制映射到数字的新列:
color_to_number = {'#ffffff':1,
'#14a4a4':2,
'#16c015':3,
'#80a0f0':4,
'#c048bf':5,
'#c0c000':6,
'#f01405':7,
'#f08080':8,
'#f09147':9}
hv.HeatMap(data=alignment_df, kdims=['alnpos','defline'], vdims=['color_by_numbers'])
生成一个情节很好,但试图使用
explicit color mapping
使用上面字典的反面来映射颜色(
hv.HeatMap(data=alignment_df, kdims=['alnpos','defline'], vdims=['color_by_numbers']).opts(cmap=number_to_color)
)什么也不打印。
有人知道这里出了什么问题吗?Heatmap是否无法接受字典
cmap
?我希望避免颜色循环,以避免数据中不存在一种颜色时出现问题。