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