Большая логарифмическая c цветовая гамма pyhton sns.clustermap () - PullRequest
1 голос
/ 29 апреля 2020

Большинство моих значений в сводных значениях l ie между 0,96 и 1 .. как 0,960186 0,960139 0,960129 et c .. Я хочу, чтобы они были различимы ... но так как некоторые из моих значений намного больше, например 10, Я сделал двойную логарифмическую c цветовую шкалу. Но это не помогает. У кого-нибудь есть идея?

enter image description here

Я сделал

p = sns.clustermap(pivotted, norm=SymLogNorm(linthresh=0.000000001, vmin=pivotted.min().min(), vmax=pivotted.max().max()))

1 Ответ

1 голос
/ 30 апреля 2020

Вы можете попробовать что-то вроде ниже, хитрость состоит в том, чтобы установить границы на более низкие значения:

import seaborn as sns
import numpy as np
from matplotlib.colors import LogNorm
from matplotlib.colors import LinearSegmentedColormap

boundaries = [0.0, 0.03, 0.06, 0.09, 0.12,1.0]  
hex_colors = sns.color_palette("coolwarm", n_colors=len(boundaries) * 2 + 2).as_hex()
hex_colors = [hex_colors[i] for i in range(0, len(hex_colors), 2)]

colors=list(zip(boundaries, hex_colors))

custom_color_map = LinearSegmentedColormap.from_list(
    name="cus",
    colors=colors,
)

Вы также можете определить список цветов до тех пор, пока границы. Поэтому ниже я пытаюсь смоделировать данные, подобные вашим, не знаю, насколько они близки:

np.random.seed(111)
df = np.random.uniform(low=0.8,high=1,size=(8,8))
df[np.random.randint(0,7,6),np.random.randint(0,7,6)] = 10,9,10,9,10,9

sns.clustermap(df,norm=LogNorm(),cmap=custom_color_map)

enter image description here

...