我使用Seaborn的FacetGrid
類來使用Seaborn的heatmap
函數繪製一組矩陣。但是,我無法調整這些子圖的縱橫比。下面是一個例子:如何在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)
產生這個圖像:
通知矩陣重複的元素如何是矩形的,而不是正方形。如果我正在製作一個情節(沒有FacetGrid
),我可以將選項square=True
轉換爲sns.heatmap
以使情節平方。不過,如果我提出,在參數map_dataframe
,我得到這樣的結果:
fg = sns.FacetGrid(data, col='label0')
fg.map_dataframe(draw_heatmap, 'label1', 'label2', 'value', cbar=False, square=True)
它看起來像軸太大的數據,即使默認寬高比爲FacetGrid
(並明確地設置aspect=1
時,構建FacetGrid
沒有幫助。)
有沒有什麼辦法解決這個問題?
你的問題解決了不經意間我的問題! (如何製作熱點圖)。 – anthonybell