seaborn.objects.Plot.scale#

Plot.scale(**scales)#

指定從資料單位到視覺屬性的映射。

關鍵字對應於在繪圖中定義的變數,包括座標變數(xy)和語義變數(colorpointsize 等)。

接受一些「魔法」參數,包括
  • 轉換的名稱(例如,"log""sqrt"

  • 調色盤的名稱(例如,"viridis""muted"

  • 值的元組,定義輸出範圍(例如 (1, 5)

  • 一個字典,表示 Nominal 比例尺(例如 {"a": .2, "b": .5}

  • 一個值列表,表示 Nominal 比例尺(例如 ["b", "r"]

若要更明確地控制,請傳遞比例尺規格物件,例如 ContinuousNominal。或傳遞 None 以使用「恆等」比例尺,它會將資料值視為直接編碼視覺屬性。

範例

傳遞函式的名稱,例如 "log""symlog",將設定比例尺的轉換

p1 = so.Plot(diamonds, x="carat", y="price")
p1.add(so.Dots()).scale(y="log")
../_images/objects.Plot.scale_1_0.png

字串引數也可以指定調色盤的名稱,該調色盤定義比例尺的輸出值(或「範圍」)

p1.add(so.Dots(), color="clarity").scale(color="crest")
../_images/objects.Plot.scale_3_0.png

比例尺的範圍也可以指定為最小值/最大值的元組

p1.add(so.Dots(), pointsize="carat").scale(pointsize=(2, 10))
../_images/objects.Plot.scale_5_0.png

元組格式也可以用於顏色比例尺

p1.add(so.Dots(), color="carat").scale(color=(".4", "#68d"))
../_images/objects.Plot.scale_7_0.png

若要進行更多控制,請傳遞比例尺物件,例如 Continuous,它可讓您指定輸入域(norm)、輸出範圍(values)和非線性轉換(trans

(
    p1.add(so.Dots(), color="carat")
    .scale(color=so.Continuous((".4", "#68d"), norm=(1, 3), trans="sqrt"))
)
../_images/objects.Plot.scale_9_0.png

比例尺物件還提供介面,用於設定比例尺刻度(包括在圖例中)的位置以及刻度標籤的格式

(
    p1.add(so.Dots(), color="price")
    .scale(
        x=so.Continuous(trans="sqrt").tick(every=.5),
        y=so.Continuous().label(like="${x:g}"),
        color=so.Continuous("ch:.2").tick(upto=4).label(unit=""),
    )
    .label(y="")
)
../_images/objects.Plot.scale_11_0.png

如果比例尺包含非線性轉換,則它將在任何統計轉換之前應用

(
    p1.add(so.Dots(color=".7"))
    .add(so.Line(), so.PolyFit(order=2))
    .scale(y="log")
    .limit(y=(250, 25000))
)
../_images/objects.Plot.scale_13_0.png

當數值資料應視為類別時,比例尺也很重要。考慮以下直方圖

p2 = so.Plot(mpg, "cylinders").add(so.Bar(), so.Hist())
p2
../_images/objects.Plot.scale_15_0.png

預設情況下,繪圖會為 cylinders 提供連續比例尺,因為它是浮點數向量。但是,指定 Nominal 比例尺會導致直方圖正確地對觀測值進行分箱

p2.scale(x=so.Nominal())
../_images/objects.Plot.scale_17_0.png

語義映射的預設行為也取決於輸入資料類型,並且可以由比例尺修改。考慮應用於此繪圖中顏色的循序映射

p3 = (
    so.Plot(mpg, "weight", "acceleration", color="cylinders")
    .add(so.Dot(), marker="origin")
)
p3
../_images/objects.Plot.scale_19_0.png

傳遞定性調色盤的名稱將選擇 Nominal 比例尺

p3.scale(color="deep")
../_images/objects.Plot.scale_21_0.png

當輸出值以清單或字典形式給出時,也表示 Nominal 比例尺

p3.scale(
    color=["#49b", "#a6a", "#5b8"],
    marker={"japan": ".", "europe": "+", "usa": "*"},
)
../_images/objects.Plot.scale_23_0.png

直接傳遞 Nominal 物件以控制類別映射的順序

p3.scale(
    color=so.Nominal(["#008fd5", "#fc4f30", "#e5ae38"]),
    marker=so.Nominal(order=["japan", "europe", "usa"])
)
../_images/objects.Plot.scale_25_0.png