seaborn.objects.Plot.add#

Plot.add(mark, *transforms, orient=None, legend=True, label=None, data=None, **variables)#

根據標記和資料轉換(s)指定視覺化圖層。

這是指定如何視覺化資料的主要方法。可以多次使用不同的參數來定義具有多個圖層的繪圖。

參數:
markMark

在此圖層中使用的資料視覺化表示。

transformsStatMove

表示在繪製資料之前要應用的轉換的物件。目前,最多可以使用一個 Stat,並且必須先傳遞它。此限制將在未來放寬。

orient“x”、“y”、“v” 或 “h”

標記的方向,這也會影響轉換的計算方式。通常對應於定義聚合群組的軸。“v”(垂直)和“h”(水平)選項是“x”/“y”的同義詞,但對於某些標記可能更直觀。如果未提供,則將根據資料和刻度的特性推斷方向。

legendbool

選擇是否在圖例中隱藏此圖層的標記/映射。

labelstr

用於圖例中圖層的標籤,獨立於任何映射。

dataDataFrame 或 dict

覆寫建構函式中提供的全域來源的資料來源。

variables資料向量或識別符號

其他圖層特定的變數,包括將直接傳遞給轉換而無需縮放的變數。

範例

每個圖層都必須使用 Mark 定義

p = so.Plot(tips, "total_bill", "tip").add(so.Dot())
p
../_images/objects.Plot.add_1_0.png

多次呼叫 Plot.add 以新增多個圖層。除了 Mark 之外,圖層還可以使用 StatMove 轉換來定義

p.add(so.Line(), so.PolyFit())
../_images/objects.Plot.add_3_0.png

多個轉換可以堆疊成管道。

(
    so.Plot(tips, y="day", color="sex")
    .add(so.Bar(), so.Hist(), so.Dodge())
)
../_images/objects.Plot.add_5_0.png

圖層具有「方向」,這會影響轉換和某些標記。方向通常從分配給 xy 的變數類型推斷,但在其他情況下可能不明確時,可以指定它

(
    so.Plot(tips, x="total_bill", y="size", color="time")
    .add(so.Dot(alpha=.5), so.Dodge(), so.Jitter(.4), orient="y")
)
../_images/objects.Plot.add_7_0.png

可以將變數分配給特定的圖層。請注意 pointsize 如何傳遞給 Plot.add 的區別 — 因此它由刻度映射 — 而 colorlinewidth 直接傳遞給 Line,因此它們直接設定線條的顏色和寬度

(
    so.Plot(tips, "total_bill", "tip")
    .add(so.Dots(), pointsize="size")
    .add(so.Line(color=".3", linewidth=3), so.PolyFit())
    .scale(pointsize=(2, 10))
)
../_images/objects.Plot.add_9_0.png

否則會應用於整個繪圖的變數也可以透過將它們的值設定為 None 從特定圖層排除

(
    so.Plot(tips, "total_bill", "tip", color="day")
    .facet(col="day")
    .add(so.Dot(color="#aabc"), col=None, color=None)
    .add(so.Dot())
)
../_images/objects.Plot.add_11_0.png

僅由轉換使用的變數必須在圖層層級傳遞

(
    so.Plot(tips, "day")
    .add(so.Bar(), so.Hist(), weight="size")
    .label(y="Total patrons")
)
../_images/objects.Plot.add_13_0.png

每個圖層都可以提供自己的資料來源。如果在建構函式中提供了資料來源,則會使用其索引聯結圖層資料

(
    so.Plot(tips, "total_bill", "tip")
    .add(so.Dot(color="#aabc"))
    .add(so.Dot(), data=tips.query("size == 2"), color="time")
)
../_images/objects.Plot.add_15_0.png

提供 label 將在繪圖的圖例中註釋圖層

(
    so.Plot(tips, x="size")
    .add(so.Line(color="C1"), so.Agg(), y="total_bill", label="Bill")
    .add(so.Line(color="C2"), so.Agg(), y="tip", label="Tip")
    .label(y="Value")
)
../_images/objects.Plot.add_17_0.png