seaborn.
swarmplot
(*, x=None, y=None, hue=None, data=None, order=None, hue_order=None, dodge=False, orient=None, color=None, palette=None, size=5, edgecolor='gray', linewidth=0, ax=None, **kwargs)¶用非重叠点绘制分类散点图。
此功能类似于 stripplot()
,但这些点会被调整(仅沿分类轴),以便它们不会重叠。这样可以更好地表示值的分布,但不能很好地适应大量观测。这种类型的情节有时被称为“蜂群”。
群图可以自己绘制,但在需要显示所有观测值以及底层分布的某些表示的情况下,它也是方框图或小提琴图的一个很好的补充。
正确地排列点需要在数据和点坐标之间进行精确的转换。这意味着必须设置非默认轴限制 之前 绘制情节。
输入数据可以以多种格式传递,包括:
表示为列表、numpy数组或直接传递给 x
, y
和/或 hue
参数。
“长格式”数据帧,在这种情况下 x
, y
和 hue
变量将决定如何绘制数据。
一个“宽格式”数据框,这样每个数字列都将被打印出来。
向量的数组或列表。
在大多数情况下,可以使用numpy或Python对象,但最好使用pandas对象,因为关联的名称将用于注释轴。此外,可以对分组变量使用分类类型来控制绘图元素的顺序。
此函数始终将其中一个变量视为分类变量,并在顺序位置(0,1。。。n) 在相关轴上,即使数据具有数字或日期类型。
见 tutorial 更多信息。
data
或矢量数据,可选中变量的名称用于绘制长格式数据的输入。解释见示例。
用于打印的数据集。如果 x
和 y
不存在,这被解释为广义形式。否则它将是长格式的。
以绘制中的分类级别,否则级别是从数据对象推断出来的。
使用时 hue
嵌套,设置为 True
将沿分类轴分离不同色调级别的条带。否则,每个级别的点将绘制在一个群中。
绘图的水平方向或垂直方向。这通常是根据输入变量的类型推断出来的,但当两者都存在时,它可以用来解决含糊不清的问题 x
和 y
是数字或打印宽格式数据时。
所有元素的颜色,或渐变调色板的种子。
用于不同级别的 hue
变量。应该是可以解释的东西 color_palette()
,或将色调级别映射到matplotlib颜色的字典。
标记的半径,以点为单位。
每个点周围线条的颜色。如果你通过了 "gray"
,亮度由用于点主体的调色板确定。
构成绘图元素的灰色线的宽度。
轴对象,否则使用当前轴。
其他关键字参数传递给 matplotlib.axes.Axes.scatter()
.
返回绘制了绘图的轴对象。
参见
boxplot
一个具有类似API的传统盒子和胡须图。
violinplot
箱线图和核密度估计的结合。
stripplot
一个变量是绝对变量的散点图。可以与其他绘图一起使用来显示每个观察结果。
catplot
把一个明确的情节与另一个情节结合起来 FacetGrid
.
实例
绘制单个水平群集图:
>>> import seaborn as sns
>>> sns.set_theme(style="whitegrid")
>>> tips = sns.load_dataset("tips")
>>> ax = sns.swarmplot(x=tips["total_bill"])
通过分类变量对群集进行分组:
>>> ax = sns.swarmplot(x="day", y="total_bill", data=tips)
绘制水平群集:
>>> ax = sns.swarmplot(x="total_bill", y="day", data=tips)
使用第二个分类变量为点上色:
>>> ax = sns.swarmplot(x="day", y="total_bill", hue="sex", data=tips)
拆分每个级别的 hue
沿分类轴的变量:
>>> ax = sns.swarmplot(x="day", y="total_bill", hue="smoker",
... data=tips, palette="Set2", dodge=True)
通过传递显式命令来控制群集命令:
>>> ax = sns.swarmplot(x="time", y="total_bill", data=tips,
... order=["Dinner", "Lunch"])
使用较大的点绘制:
>>> ax = sns.swarmplot(x="time", y="total_bill", data=tips, size=6)
在方框图的顶部绘制大量观察结果:
>>> ax = sns.boxplot(x="total_bill", y="day", data=tips, whis=np.inf)
>>> ax = sns.swarmplot(x="total_bill", y="day", data=tips, color=".2")
在小提琴图上画出成群的观察结果:
>>> ax = sns.violinplot(x="day", y="total_bill", data=tips, inner=None)
>>> ax = sns.swarmplot(x="day", y="total_bill", data=tips,
... color="white", edgecolor="gray")
使用 catplot()
合并 swarmplot()
和A FacetGrid
. 这允许在其他分类变量中进行分组。使用 catplot()
比使用更安全 FacetGrid
直接,因为它确保了跨方面的可变顺序的同步:
>>> g = sns.catplot(x="sex", y="total_bill",
... hue="smoker", col="time",
... data=tips, kind="swarm",
... height=4, aspect=.7);