Тепловая карта словаря словарей с числовыми значениями - PullRequest
0 голосов
/ 12 января 2020

Я пытаюсь создать тепловую карту матрицы вероятностей, которая выглядит примерно так (с seaborn): probability matrix

heat_map = sb.heatmap(prob_matrix, xticklabels=b, yticklabels=b)

Теперь я попытался сделать это с моим матрица, но функция не работает с тем, как построена моя матрица. Может ли кто-нибудь помочь мне написать новую функцию для тепловой карты с моей матрицей? Или помогите мне преобразовать мою матрицу, чтобы я мог использовать вышеописанную функцию?

Моя матрица выглядит так, она имеет размер 20x20, но я дам меньшую версию:

{'A': {'A': 0.25, 'C': 0.5, 'D': 0.25}, 'C': {'A': 0.33, 'C': 0.33, 'D': 0.33}, 'D': {'A': 0.75, 'C': 0.25, 'D': 0}}

Ответы [ 2 ]

2 голосов
/ 12 января 2020

Вы можете конвертировать ваши данные в нужный формат

data = [np.array(list(d.values())) for d in probs.values()]
>>> data
[array([ 0.25,  0.5 ,  0.25]), array([ 0.33,  0.33,  0.33]), array([ 0.75,  0.25,  0.  ])]

enter image description here

1 голос
/ 12 января 2020

Pandas может помочь преобразовать ваши данные в форму, с которой может работать seaborn:

import pandas as pd
import seaborn as sb

data = {'A': {'A': 0.25, 'C': 0.5, 'D': 0.25}, 
        'C': {'A': 0.33, 'C': 0.33, 'D': 0.33}, 
        'D': {'A': 0.75, 'C': 0.25, 'D': 0}}

prob_matrix = pd.DataFrame(data).T.fillna(0)
sb.heatmap(prob_matrix)

Это построит вашу матрицу с метками исходного словаря.

...