seaborn.PairGrid#

class seaborn.PairGrid(data, *, hue=None, vars=None, x_vars=None, y_vars=None, hue_order=None, palette=None, hue_kws=None, corner=False, diag_sharey=True, height=2.5, aspect=1, layout_pad=0.5, despine=True, dropna=False)#

用於繪製資料集中成對關係的子圖網格。

此物件將資料集中的每個變數對應到多個軸網格中的一個欄和列。可以使用不同的軸層級繪圖函式,在上下三角形中繪製雙變數圖,並且每個變數的邊際分佈可以顯示在對角線上。

可以使用 pairplot() 在單行中生成幾個不同的常見圖。當您需要更高的彈性時,請使用 PairGrid

請參閱 教學 以取得更多資訊。

__init__(data, *, hue=None, vars=None, x_vars=None, y_vars=None, hue_order=None, palette=None, hue_kws=None, corner=False, diag_sharey=True, height=2.5, aspect=1, layout_pad=0.5, despine=True, dropna=False)#

初始化繪圖和 PairGrid 物件。

參數:
dataDataFrame

整潔 (長格式) 資料框架,其中每個欄是一個變數,每個列是一個觀察值。

hue字串(變數名稱)

data 中將繪圖方面對應到不同顏色的變數。此變數將會從預設的 x 和 y 變數中排除。

vars變數名稱列表

data 中要使用的變數,否則使用每個具有數值資料類型的欄。

{x, y}_vars變數名稱列表

data 中分別用於圖形行和列的變數;例如,繪製一個非正方形圖。

hue_order字串列表

調色盤中色調變數的層級順序

palette字典或 seaborn 調色盤

用於對應 hue 變數的顏色組合。如果是字典,則鍵應為 hue 變數中的值。

hue_kws參數 -> 值列表對應的字典

要插入繪圖呼叫的其他關鍵字引數,以讓其他繪圖屬性在色調變數的層級之間變化(例如,散佈圖中的標記)。

cornerbool

如果為 True,則不要將軸新增至網格的上(非對角線)三角形,使此圖為「角落」圖。

height純量

每個分面的高度(以英吋為單位)。

aspect純量

長寬比 * 高度得出每個分面的寬度(以英吋為單位)。

layout_pad純量

軸之間的間距;傳遞到 fig.tight_layout

despine布林值

從圖形中移除頂部和右側的邊緣。

dropna布林值

在繪圖之前,從資料中刪除遺失值。

另請參閱

pairplot

輕鬆繪製 PairGrid 的常見用途。

FacetGrid

用於繪製條件關係的子圖網格。

範例

呼叫建構函式會建立一個空白的子圖網格,其中每一列和一欄對應於資料集中的一個數值變數

penguins = sns.load_dataset("penguins")
g = sns.PairGrid(penguins)
../_images/PairGrid_1_0.png

將雙變數函數傳遞給 PairGrid.map() 將在每個軸上繪製雙變數圖

g = sns.PairGrid(penguins)
g.map(sns.scatterplot)
../_images/PairGrid_3_0.png

將不同的函數傳遞給 PairGrid.map_diag()PairGrid.map_offdiag() 將在對角線上顯示每個變數的邊際分佈

g = sns.PairGrid(penguins)
g.map_diag(sns.histplot)
g.map_offdiag(sns.scatterplot)
../_images/PairGrid_5_0.png

也可以在圖的上下三角形上使用不同的函數(否則這些函數是多餘的)

g = sns.PairGrid(penguins, diag_sharey=False)
g.map_upper(sns.scatterplot)
g.map_lower(sns.kdeplot)
g.map_diag(sns.kdeplot)
../_images/PairGrid_7_0.png

或者完全避免冗餘

g = sns.PairGrid(penguins, diag_sharey=False, corner=True)
g.map_lower(sns.scatterplot)
g.map_diag(sns.kdeplot)
../_images/PairGrid_9_0.png

PairGrid 建構函式接受一個 hue 變數。此變數會直接傳遞給能理解它的函數

g = sns.PairGrid(penguins, hue="species")
g.map_diag(sns.histplot)
g.map_offdiag(sns.scatterplot)
g.add_legend()
../_images/PairGrid_11_0.png

但是你也可以傳遞 matplotlib 函數,在這種情況下,會在內部執行 groupby,並為每個層級繪製一個單獨的圖

g = sns.PairGrid(penguins, hue="species")
g.map_diag(plt.hist)
g.map_offdiag(plt.scatter)
g.add_legend()
../_images/PairGrid_13_0.png

可以在映射函數時直接傳遞資料向量來指定其他語意變數

g = sns.PairGrid(penguins, hue="species")
g.map_diag(sns.histplot)
g.map_offdiag(sns.scatterplot, size=penguins["sex"])
g.add_legend(title="", adjust_subtitles=True)
../_images/PairGrid_15_0.png

當使用可以實現數值色調映射的 seaborn 函數時,您會想要停用對角軸上變數的映射。 請注意,hue 變數預設會從顯示的變數清單中排除

g = sns.PairGrid(penguins, hue="body_mass_g")
g.map_diag(sns.histplot, hue=None, color=".3")
g.map_offdiag(sns.scatterplot)
g.add_legend()
../_images/PairGrid_17_0.png

可以使用 vars 參數來精確控制使用哪些變數

variables = ["body_mass_g", "bill_length_mm", "flipper_length_mm"]
g = sns.PairGrid(penguins, hue="body_mass_g", vars=variables)
g.map_diag(sns.histplot, hue=None, color=".3")
g.map_offdiag(sns.scatterplot)
g.add_legend()
../_images/PairGrid_19_0.png

該圖不必是正方形:可以使用不同的變數來定義列和欄

x_vars = ["body_mass_g", "bill_length_mm", "bill_depth_mm", "flipper_length_mm"]
y_vars = ["body_mass_g"]
g = sns.PairGrid(penguins, hue="species", x_vars=x_vars, y_vars=y_vars)
g.map_diag(sns.histplot, color=".3")
g.map_offdiag(sns.scatterplot)
g.add_legend()
../_images/PairGrid_21_0.png

探索在對角軸上解析多個分佈的不同方法可能會很有用

g = sns.PairGrid(penguins, hue="species")
g.map_diag(sns.histplot, multiple="stack", element="step")
g.map_offdiag(sns.scatterplot)
g.add_legend()
../_images/PairGrid_23_0.png

方法

__init__(data, *[, hue, vars, x_vars, ...])

初始化繪圖和 PairGrid 物件。

add_legend([legend_data, title, ...])

繪製圖例,可能會將其放置在軸外部並調整圖形大小。

apply(func, *args, **kwargs)

將網格傳遞給使用者提供的函數並返回 self。

map(func, **kwargs)

在每個子圖中使用相同的函數繪圖。

map_diag(func, **kwargs)

在每個對角子圖中使用單變數函數繪圖。

map_lower(func, **kwargs)

在下對角子圖中使用雙變數函數繪圖。

map_offdiag(func, **kwargs)

在非對角子圖中使用雙變數函數繪圖。

map_upper(func, **kwargs)

在上對角子圖中使用雙變數函數繪圖。

pipe(func, *args, **kwargs)

將網格傳遞給使用者提供的函數並返回其值。

savefig(*args, **kwargs)

儲存圖表的圖像。

set(**kwargs)

設定每個子圖軸的屬性。

tick_params([axis])

修改刻度、刻度標籤和網格線。

tight_layout(*args, **kwargs)

在排除圖例的矩形區域內呼叫 fig.tight_layout。

屬性

fig

已棄用:請優先使用 figure 屬性。

figure

存取網格底層的 matplotlib.figure.Figure 物件。

legend

如果存在,則為 matplotlib.legend.Legend 物件。