seaborn.objects.Plot.scale#
- Plot.scale(**scales)#
指定從資料單位到視覺屬性的映射。
關鍵字對應於在繪圖中定義的變數,包括座標變數(
x
、y
)和語義變數(color
、pointsize
等)。- 接受一些「魔法」參數,包括
若要更明確地控制,請傳遞比例尺規格物件,例如
Continuous
或Nominal
。或傳遞None
以使用「恆等」比例尺,它會將資料值視為直接編碼視覺屬性。範例
傳遞函式的名稱,例如
"log"
或"symlog"
,將設定比例尺的轉換p1 = so.Plot(diamonds, x="carat", y="price") p1.add(so.Dots()).scale(y="log")
字串引數也可以指定調色盤的名稱,該調色盤定義比例尺的輸出值(或「範圍」)
p1.add(so.Dots(), color="clarity").scale(color="crest")
比例尺的範圍也可以指定為最小值/最大值的元組
p1.add(so.Dots(), pointsize="carat").scale(pointsize=(2, 10))
元組格式也可以用於顏色比例尺
p1.add(so.Dots(), color="carat").scale(color=(".4", "#68d"))
若要進行更多控制,請傳遞比例尺物件,例如
Continuous
,它可讓您指定輸入域(norm
)、輸出範圍(values
)和非線性轉換(trans
)( p1.add(so.Dots(), color="carat") .scale(color=so.Continuous((".4", "#68d"), norm=(1, 3), trans="sqrt")) )
比例尺物件還提供介面,用於設定比例尺刻度(包括在圖例中)的位置以及刻度標籤的格式
( 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="") )
如果比例尺包含非線性轉換,則它將在任何統計轉換之前應用
( p1.add(so.Dots(color=".7")) .add(so.Line(), so.PolyFit(order=2)) .scale(y="log") .limit(y=(250, 25000)) )
當數值資料應視為類別時,比例尺也很重要。考慮以下直方圖
p2 = so.Plot(mpg, "cylinders").add(so.Bar(), so.Hist()) p2
預設情況下,繪圖會為
cylinders
提供連續比例尺,因為它是浮點數向量。但是,指定Nominal
比例尺會導致直方圖正確地對觀測值進行分箱p2.scale(x=so.Nominal())
語義映射的預設行為也取決於輸入資料類型,並且可以由比例尺修改。考慮應用於此繪圖中顏色的循序映射
p3 = ( so.Plot(mpg, "weight", "acceleration", color="cylinders") .add(so.Dot(), marker="origin") ) p3
傳遞定性調色盤的名稱將選擇
Nominal
比例尺p3.scale(color="deep")
當輸出值以清單或字典形式給出時,也表示
Nominal
比例尺p3.scale( color=["#49b", "#a6a", "#5b8"], marker={"japan": ".", "europe": "+", "usa": "*"}, )
直接傳遞
Nominal
物件以控制類別映射的順序p3.scale( color=so.Nominal(["#008fd5", "#fc4f30", "#e5ae38"]), marker=so.Nominal(order=["japan", "europe", "usa"]) )