seaborn.stripplot#

seaborn.stripplot(data=None, *, x=None, y=None, hue=None, order=None, hue_order=None, jitter=True, dodge=False, orient=None, color=None, palette=None, size=5, edgecolor=<default>, linewidth=0, hue_norm=None, log_scale=None, native_scale=False, formatter=None, legend='auto', ax=None, **kwargs)#

繪製一個類別散佈圖,使用抖動來減少重疊。

條狀圖可以單獨繪製,但在您想要顯示所有觀察值以及一些底層分佈的表示時,它也是箱形圖或小提琴圖的良好補充。

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

注意

預設情況下,此函數將其中一個變數視為類別變數,並在相關軸上以序數位置 (0, 1, … n) 繪製資料。 從 0.13.0 版本開始,可以透過設定 native_scale=True 來停用此功能。

參數:
dataDataFrame、Series、dict、陣列或陣列列表

用於繪圖的資料集。 如果沒有 xy,則會將其解釋為寬格式。 否則,預期為長格式。

x, y, huedata 中的變數名稱或向量資料

用於繪製長格式資料的輸入。 請參閱範例以了解解釋。

order, hue_order字串列表

繪製類別層級的順序; 否則,層級將從資料物件中推斷。

jitterfloat, True/1 是特殊情況

要應用的抖動量(僅沿類別軸)。 當您有許多點且它們重疊時,這會很有用,因此更容易看到分佈。 您可以指定抖動量(均勻隨機變數支援寬度的一半),或使用 True 作為良好的預設值。

dodgebool

當分配了 hue 變數時,將此設定為 True 將沿類別軸分隔不同色調層級的條狀圖,並縮小分配給每個條狀圖的空間量。 否則,每個層級的點將繪製在同一個條狀圖中。

orient“v” | “h” | “x” | “y”

繪圖的方向(垂直或水平)。 這通常會根據輸入變數的類型來推斷,但當 xy 都是數值或繪製寬格式資料時,它可以用來解決歧義。

在 v0.13.0 版本中變更: 新增「x」/「y」作為選項,相當於「v」/「h」。

colormatplotlib 顏色

繪圖中元素的單一顏色。

palette調色盤名稱、列表或字典

用於 hue 變數不同層級的顏色。 應該是 color_palette() 可以解釋的內容,或是將色調層級對應到 matplotlib 顏色的字典。

sizefloat

標記的半徑,以點為單位。

edgecolormatplotlib 顏色,「gray」為特殊情況

每個點周圍線條的顏色。 如果您傳遞 "gray",則亮度由用於點主體的調色盤決定。 請注意,stripplot 預設具有 linewidth=0,因此只有在線寬不為零時,邊緣顏色才可見。

linewidthfloat

構成繪圖元素的線條寬度。

hue_normtuple 或 matplotlib.colors.Normalize 物件

hue 變數為數值時,應用於 hue 變數的色彩對應之資料單位中的正規化。 如果 hue 是類別變數,則不相關。

v0.12.0 版本新增。

log_scalebool 或數字,或一對布林值或數字

將軸刻度設定為對數。 單一值會設定繪圖中任何數值軸的資料軸。 一對值會獨立設定每個軸。 數值會被解釋為所需的底數(預設值為 10)。 當 NoneFalse 時,seaborn 會延遲到現有的軸刻度。

v0.13.0 版本新增。

native_scalebool

當為 True 時,類別軸上的數值或日期時間值將會保持其原始縮放,而不會轉換為固定索引。

v0.13.0 版本新增。

formatter可呼叫函式

用於將類別資料轉換為字串的函式。 會影響群組和刻度標籤。

v0.13.0 版本新增。

legend“auto”, “brief”, “full”, or False

如何繪製圖例。如果為「簡略 (brief)」,數值 huesize 變數將會以均勻間隔的值樣本來表示。如果為「完整 (full)」,則每個群組都會在圖例中獲得一個條目。如果為「自動 (auto)」,則根據層級數量選擇簡略或完整表示。如果為 False,則不會加入圖例資料,也不會繪製圖例。

v0.13.0 版本新增。

axmatplotlib Axes

要將繪圖繪製在其上的 Axes 物件,否則使用目前的 Axes。

kwargs鍵,值對應

其他關鍵字參數會傳遞給 matplotlib.axes.Axes.scatter()

回傳值:
axmatplotlib Axes

回傳繪製了圖形的 Axes 物件。

另請參閱

swarmplot

一個類別散佈圖,其中點不會重疊。可以與其他圖形一起使用來顯示每個觀察值。

boxplot

一個具有相似 API 的傳統箱型圖。

violinplot

箱型圖和核密度估計的組合。

catplot

將類別圖與 FacetGrid 結合。

範例

指定單一數值變數會顯示其單變數分佈,點在另一個軸上隨機「抖動」。

tips = sns.load_dataset("tips")
sns.stripplot(data=tips, x="total_bill")
../_images/stripplot_1_0.png

指定第二個變數會分割點的條狀圖,以比較該變數的類別層級。

sns.stripplot(data=tips, x="total_bill", y="day")
../_images/stripplot_3_0.png

透過交換類別和數值變數的指定,顯示垂直方向的條狀圖。

sns.stripplot(data=tips, x="day", y="total_bill")
../_images/stripplot_5_0.png

在 0.12 版本之前,類別變數的層級預設具有不同的顏色。若要獲得相同的效果,請明確指定 hue 變數。

sns.stripplot(data=tips, x="total_bill", y="day", hue="day", legend=False)
../_images/stripplot_7_0.png

或者,您可以將不同的變數指定給 hue,以顯示多維度關係。

sns.stripplot(data=tips, x="total_bill", y="day", hue="sex")
../_images/stripplot_9_0.png

如果 hue 變數是數值的,則預設會使用定量調色盤來映射 (請注意,在 0.12 版本之前並非如此)。

sns.stripplot(data=tips, x="total_bill", y="day", hue="size")
../_images/stripplot_11_0.png

使用 palette 控制顏色映射,包括透過傳遞定性調色盤的名稱來強制進行類別映射。

sns.stripplot(data=tips, x="total_bill", y="day", hue="size", palette="deep")
../_images/stripplot_13_0.png

預設情況下,hue 變數的不同層級會混合在每個條狀圖中,但設定 dodge=True 將會分割它們。

sns.stripplot(data=tips, x="total_bill", y="day", hue="sex", dodge=True)
../_images/stripplot_15_0.png

可以透過設定 jitter=False 來停用隨機抖動。

sns.stripplot(data=tips, x="total_bill", y="day", hue="sex", dodge=True, jitter=False)
../_images/stripplot_17_0.png

如果在寬格式模式下繪圖,資料框架的每個數值欄都會映射到 xhue

sns.stripplot(data=tips)
../_images/stripplot_19_0.png

若要在寬格式模式下變更方向,請明確傳遞 orient

sns.stripplot(data=tips, orient="h")
../_images/stripplot_21_0.png

當兩個軸變數都是數值時,orient 參數也很有用,因為它可以解決要沿哪個維度進行分組 (和抖動) 的模糊性。

sns.stripplot(data=tips, x="total_bill", y="size", orient="h")
../_images/stripplot_23_0.png

預設情況下,即使類別變數是數值的,也會使用固定比例 (0, 1, …) 將其映射到離散索引。

sns.stripplot(
    data=tips.query("size in [2, 3, 5]"),
    x="total_bill", y="size", orient="h",
)
../_images/stripplot_25_0.png

若要停用此行為並使用變數的原始比例,請設定 native_scale=True

sns.stripplot(
    data=tips.query("size in [2, 3, 5]"),
    x="total_bill", y="size", orient="h",
    native_scale=True,
)
../_images/stripplot_27_0.png

可以透過傳遞 matplotlib.axes.Axes.scatter() 的關鍵字參數來實現進一步的視覺自訂。

sns.stripplot(
    data=tips, x="total_bill", y="day", hue="time",
    jitter=False, s=20, marker="D", linewidth=1, alpha=.1,
)
../_images/stripplot_29_0.png

若要製作具有多個面的圖形,使用 catplot() 比直接使用 FacetGrid 更安全,因為 catplot() 將確保類別和 hue 變數在每個面中正確同步。

sns.catplot(data=tips, x="time", y="total_bill", hue="sex", col="day", aspect=.5)
../_images/stripplot_31_0.png