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"]) )