Как правильно отобразить набор данных с несколькими критериями на тепловой карте? - PullRequest
1 голос
/ 26 мая 2019

У меня есть набор данных в массиве Numpy в следующем формате. Каждый «столбец» является отдельным критерием. Я хочу отобразить тепловую карту, где каждый «столбец» будет соответствовать диапазону оценок в этом столбце:

[[ 226 600 3.33 915. 92.6 98.6 ] [ 217 700 3.34 640. 93.7 98.5 ] [ 213 900 3.35 662. 88.8 96. ] ... [ 108 600 2.31 291. 64. 70.4 ] [ 125 800 3.36 1094. 65.5 84.1 ] [ 109 400 2.44 941. 52.3 68.7 ]]

Я написал функцию для создания тепловой карты:

def HeatMap(data):

    #generate heatmap figure
    figure = plt.figure()
    sub_figure = figure.add_subplot(111)
    heatmap = sub_figure.imshow(data, interpolation='nearest',cmap='jet', aspect=0.05)

    #generate color bar
    cbar = figure.colorbar(ax=sub_figure, mappable=heatmap, orientation='horizontal')
    cbar.set_label('Scores')

    plt.show()

Вот что генерирует функция:

enter image description here

Как указано выше, видно, что проблема заключается в моей функции где-то в диапазоне Scores от 0 до максимального значения в наборе данных 2500. Как я могу изменить свою функцию так, чтобы тепловая карта отображала оценки в столбцах в соответствии с их диапазоном, а не диапазоном всего набора данных? Мои первые мысли - изменить размеры массива на что-то вроде [[226],[600]] etc., но не уверен, что это решение

Спасибо за вашу помощь

1 Ответ

2 голосов
/ 26 мая 2019

У вас не может быть отдельного cmap для каждого столбца.

Если вы хотите увидеть изменение в каждом столбце в соответствии с их собственным диапазоном, вы можете normalize данные по столбцам перед построением графика heatmap.

Код

import numpy as np

x = np.array([[1000,  10,   0.5],
              [ 765,   5,  0.35],
              [ 800,   7,  0.09]])

x_normed = x / x.max(axis=0)

print(x_normed)
# [[ 1.     1.     1.   ]
#  [ 0.765  0.5    0.7  ]
#  [ 0.8    0.7    0.18 ]]

# Plot the heatmap for x_normed.

Это сохранит отклонения в каждом столбце.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...