seaborn.objects.Plot.add#
- Plot.add(mark, *transforms, orient=None, legend=True, label=None, data=None, **variables)#
根据标记和数据转换来指定可视化的一个层。
这是指定如何可视化数据的核心方法。它可以多次被调用,使用不同的参数来定义具有多个层的图。
- 参数::
- mark
Mark
此层中要使用的数据的可视化表示。
- transforms
Stat
或Move
表示在绘制数据之前应用的转换的对象。目前,最多只能使用一个
Stat
,并且必须先传递它。此约束将在未来放宽。- orient“x”,“y”,“v” 或 “h”
标记的方向,它也会影响转换的计算方式。通常对应于定义聚合组的轴。 “v” (垂直) 和 “h” (水平) 选项是 “x” / “y” 的同义词,但在某些标记中可能更直观。当未提供时,方向将从数据的特征和刻度中推断出来。
- legendbool
选项,用于抑制图例中此层的标记/映射。
- labelstr
在图例中用于层的标签,独立于任何映射。
- dataDataFrame 或 dict
用于覆盖构造函数中提供的全局数据源的数据源。
- variables数据向量或标识符
其他特定于层的变量,包括直接传递给转换而不进行缩放的变量。
- mark
示例
每个层都必须使用
Mark
来定义。p = so.Plot(tips, "total_bill", "tip").add(so.Dot()) p
多次调用
Plot.add
来添加多个层。除了Mark
之外,层还可以使用Stat
或Move
转换来定义。p.add(so.Line(), so.PolyFit())
多个转换可以堆叠到一个管道中。
( so.Plot(tips, y="day", color="sex") .add(so.Bar(), so.Hist(), so.Dodge()) )
层具有 “方向”,这会影响转换和某些标记。方向通常从分配给
x
和y
的变量类型推断出来,但如果不明确,也可以指定它。( so.Plot(tips, x="total_bill", y="size", color="time") .add(so.Dot(alpha=.5), so.Dodge(), so.Jitter(.4), orient="y") )
可以将变量分配给特定层。注意
pointsize
如何传递给Plot.add
— 因此它被刻度 *映射* — 而color
和linewidth
直接传递给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)) )
其他应用于整个图的变量也可以从特定层中 *排除*,方法是将它们的值设置为
None
。( so.Plot(tips, "total_bill", "tip", color="day") .facet(col="day") .add(so.Dot(color="#aabc"), col=None, color=None) .add(so.Dot()) )
仅供转换使用的变量 *必须* 在层级传递。
( so.Plot(tips, "day") .add(so.Bar(), so.Hist(), weight="size") .label(y="Total patrons") )
每个层都可以提供自己的数据源。如果在构造函数中提供了数据源,则层数据将使用其索引连接。
( so.Plot(tips, "total_bill", "tip") .add(so.Dot(color="#aabc")) .add(so.Dot(), data=tips.query("size == 2"), color="time") )
提供
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") )