ヒートマップ

配列内のデータをRGBのヒートマップに変換したいことは良くあるのでメモ。 下の関数は配列内のデータの最大値(max_val), 最小値(min_val)とヒートマップ化したい値vを渡すと、そのvのRGBを返す。

def calc_heatmap_rgb(min_val, max_val, v, str_out=True):
    mi, ma = float(min_val), float(max_val)
    ration = 2 *(v-mi) / (ma - mi)
    b = int(max(0, 255*(1 - ratio)))
    r = int(max(0, 255*(ratio -1)))
    g = 255 - b - r
    if str_out:
        return '{:0>2X}{:0>2X}{:0>2X}'.format(r, g, b)
    else:
        return r, g, b