2017-02-08 7 views
3

У меня есть dataframe, воспроизведена частично как, например:Сиборн Heatmap цветовая схема на основе ряда значений

import pandas as pd 
import numpy as np 
tab = pd.DataFrame(np.array([[ 46, 39, 25, 29, 21, 12, 33, 32, 70, 109, 144, 158, 161, 
    184, 163, 113, 117, 82, 76, 88, 77, 76, 64, 35], 
    [ 39, 33, 29, 29, 26, 14, 25, 33, 60, 83, 126, 117, 111, 
    148, 141, 104, 92, 75, 78, 74, 63, 67, 52, 39], 
    [ 30, 27, 14, 11, 20, 17, 21, 31, 48, 62, 83, 78, 88, 
    90, 80, 67, 53, 61, 47, 54, 50, 48, 35, 26], 
    [ 30, 24, 19, 15, 17, 10, 12, 18, 34, 69, 88, 79, 109, 
    95, 89, 82, 53, 46, 53, 57, 39, 41, 26, 29], 
    [ 37, 31, 18, 12, 30, 13, 15, 19, 51, 61, 74, 81, 77, 
    100, 96, 74, 60, 57, 42, 48, 43, 40, 29, 25], 
    [ 14, 8, 14, 11, 13, 7, 9, 15, 42, 49, 50, 44, 53, 
    42, 31, 31, 30, 27, 33, 25, 27, 17, 20, 17], 
    [ 10, 15, 6, 10, 15, 11, 7, 18, 28, 43, 49, 37, 41, 
    33, 37, 32, 26, 28, 19, 24, 19, 19, 13, 18], 
    [ 9, 9, 8, 12, 7, 11, 4, 8, 14, 15, 23, 30, 29, 
    34, 25, 39, 22, 20, 15, 23, 12, 19, 14, 13], 
    [ 0, 3, 4, 1, 1, 0, 3, 4, 4, 5, 3, 5, 6, 
     7, 3, 3, 6, 4, 2, 3, 3, 2, 2, 2], 
    [ 3, 0, 1, 0, 0, 0, 1, 1, 4, 8, 2, 4, 7, 
     2, 2, 9, 3, 5, 1, 5, 2, 0, 4, 1]]), index = 
     ['Stadsdeel Zuid', 'Stadsdeel West', 'Stadsdeel Nieuw-West', 
    'Stadsdeel Centrum', 'Stadsdeel Oost', 'Stadsdeel Noord', 
    'Wijk 00 Amstelveen', 'Stadsdeel Zuidoost', 'Wijk 00', 
    'Wijk 00 Aalsmeer']) 

и я создал Heatmap как таковой

ax = sns.heatmap(tab, linewidths=.5 ,robust=True ,annot_kws = {'size':14}) 
ax.tick_params(labelsize=14) 
ax.figure.set_size_inches((12, 10)) 

Я хотел бы, однако, что значения на якорь цветовая палитра основана на значениях min-max на строку, так что также хорошо видны строки с более низкими значениями. (на самом деле таблица содержит еще много строк с низкими значениями, которые плавающая карта едва показывает цветность)

Как достичь этого?

enter image description here

+1

Пожалуйста, пост сырых данных исходного набора данных, чтобы мы могли воспроизвести вам проблему. Трудно копировать и вставлять данные из изображений. –

+0

Вы правы. См. Обновленный ответ –

+0

Похоже, вы хотите нормализовать строки? – mwaskom

ответ

4

Я хотел бы нормализовать tab строк по максимальному значению в каждом ряду с:

tab_n = tab.div(tab.max(axis=1), axis=0) 

, где tab_n вкладка нормализованы, имеющие значения в диапазоне [0,1]. Надеюсь, это поможет. Заговор tab_n должен возвращать Heatmap так:

enter image description here

+0

так же просто. Великий. –