seaborn.objects.Plot.add#

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

根据标记和数据转换来指定可视化的一个层。

这是指定如何可视化数据的核心方法。它可以多次被调用,使用不同的参数来定义具有多个层的图。

参数::
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