Używam klasy Seaborn FacetGrid
do wykreślenia zestawu macierzy za pomocą funkcji heatmap
, również z Seaborn. Nie mogę jednak dostosować proporcji tych wątków. Oto przykład:Jak zrobić mapę cieplną kwadrat w Seaborn FacetGrid
import seaborn as sns
import numpy as np
import pandas as pd
# Generate a set of sample data
np.random.seed(0)
indices = pd.MultiIndex.from_product((range(5), range(5), range(5)), names=('label0', 'label1', 'label2'))
data = pd.DataFrame(np.random.uniform(0, 100, size=len(indices)), index=indices, columns=('value',)).reset_index()
def draw_heatmap(*args, **kwargs):
data = kwargs.pop('data')
d = data.pivot(index=args[1], columns=args[0], values=args[2])
sns.heatmap(d, **kwargs)
fg = sns.FacetGrid(data, col='label0')
fg.map_dataframe(draw_heatmap, 'label1', 'label2', 'value', cbar=False)
która produkuje ten obrazek:
Wskazówki w jaki sposób elementy działek macierzy są prostokątne, a nie kwadratu. Gdybym tworzył jedną działkę (bez FacetGrid
), mógłbym przekazać opcję square=True
do sns.heatmap
, aby utworzyć kwadrat. Jednakże, jeśli mogę umieścić, że w argumentacji do map_dataframe
, otrzymuję ten wynik:
fg = sns.FacetGrid(data, col='label0')
fg.map_dataframe(draw_heatmap, 'label1', 'label2', 'value', cbar=False, square=True)
Wygląda osie są zbyt duże dla danych, chociaż stosunek domyślnego obrazu na FacetGrid
to 1. (I jednoznacznie ustawienie aspect=1
przy konstruowaniu FacetGrid
nie pomaga.)
Czy istnieje sposób, aby to naprawić?
kwestionujesz przypadkowo rozwiązane na moje pytanie! (jak zrobić siatkę map ciepła). – anthonybell