seaborn.stripplot#

seaborn.stripplot(data=None, *, x=None, y=None, hue=None, order=None, hue_order=None, jitter=True, dodge=False, orient=None, color=None, palette=None, size=5, edgecolor=<default>, linewidth=0, hue_norm=None, log_scale=None, native_scale=False, formatter=None, legend='auto', ax=None, **kwargs)#

使用抖动绘制分类散点图,以减少过度绘图。

条形图可以单独绘制,但它也是盒形图或小提琴图的良好补充,在您想要显示所有观察结果以及对潜在分布的一些表示时。

有关更多信息,请参阅 教程

注意

默认情况下,此函数将其中一个变量视为分类变量,并在相关轴上按序位置 (0, 1, … n) 绘制数据。从 0.13.0 版本开始,可以通过设置 native_scale=True 来禁用此功能。

参数:
dataDataFrame、Series、dict、array 或 array 列表

用于绘图的数据集。如果 xy 缺失,则将其解释为宽格式。否则,预计它将是长格式。

x, y, huedata 中的变量名称或向量数据

用于绘制长格式数据的输入。请参阅示例以了解解释。

order, hue_order字符串列表

以其绘制分类级别顺序;否则,级别将从数据对象中推断出来。

jitterfloat、True/1 是特殊情况

要应用的抖动量(仅沿分类轴)。当您有许多点并且它们重叠时,这可能很有用,因此更容易看到分布。您可以指定抖动量(均匀随机变量支持宽度的一半),或使用 True 获取良好的默认值。

dodgebool

当分配 hue 变量时,将其设置为 True 将沿分类轴分离不同色调级别的条带,并缩小分配给每个条带的空间量。否则,每个级别的点将绘制在同一条带上。

orient“v” | “h” | “x” | “y”

图的方向(垂直或水平)。这通常根据输入变量的类型推断出来,但它可以用来解决当 xy 都是数字或绘制宽格式数据时出现的歧义。

在版本 v0.13.0 中更改: 添加了 ‘x’/’y’ 作为选项,相当于 ‘v’/’h’。

colormatplotlib 颜色

图中元素的单一颜色。

palette调色板名称、列表或字典

用于 hue 变量不同级别的颜色。应该是可以被 color_palette() 解释的内容,或者是一个将色调级别映射到 matplotlib 颜色的字典。

sizefloat

标记的半径,以点为单位。

edgecolormatplotlib 颜色,“gray” 是特殊情况

围绕每个点的线条的颜色。如果传递 "gray",则亮度由用于点主体调色板决定。请注意,stripplot 默认情况下具有 linewidth=0,因此边缘颜色只有在非零线宽时才可见。

linewidthfloat

构成绘图元素线条的宽度。

hue_norm元组或 matplotlib.colors.Normalize 对象

数据单位中的归一化,用于将色图应用于 hue 变量(当它是数字时)。如果 hue 是分类的,则与之无关。

新版功能 v0.12.0。

log_scalebool 或数字,或 bool 或数字对

将轴刻度设置为对数。单个值设置图中任何数字轴的数据轴。一对值独立设置每个轴。数字值被解释为所需基数(默认值为 10)。当 NoneFalse 时,seaborn 将委托给现有的 Axes 刻度。

新版功能 v0.13.0。

native_scalebool

当为 True 时,分类轴上的数字或日期时间值将保持其原始缩放,而不是转换为固定索引。

新版功能 v0.13.0。

formatter可调用

用于将分类数据转换为字符串的函数。影响分组和刻度标签。

新版功能 v0.13.0。

legend“auto”、"brief"、"full" 或 False

如何绘制图例。如果为 "brief",则数字 huesize 变量将用均匀间隔值的样本表示。如果为 "full",则每个组都将在图例中获得一个条目。如果为 "auto",则根据级别的数量在 "brief" 或 "full" 表示之间选择。如果为 False,则不会添加任何图例数据,也不会绘制任何图例。

新版功能 v0.13.0。

axmatplotlib Axes

用于绘制图的 Axes 对象,否则使用当前 Axes。

kwargs键值对映射

其他关键字参数将传递给 matplotlib.axes.Axes.scatter().

返回值:
axmatplotlib Axes

返回带有绘制图形的 Axes 对象。

参见

swarmplot

一种分类散点图,其中点不会重叠。可以与其他图一起使用以显示每个观测值。

boxplot

具有类似 API 的传统箱线图。

violinplot

箱线图和核密度估计的组合。

catplot

将分类图与 FacetGrid 组合。

示例

分配单个数值变量显示其单变量分布,点在另一个轴上随机“抖动”

tips = sns.load_dataset("tips")
sns.stripplot(data=tips, x="total_bill")
../_images/stripplot_1_0.png

分配第二个变量将分割点条,以比较该变量的分类级别

sns.stripplot(data=tips, x="total_bill", y="day")
../_images/stripplot_3_0.png

通过交换分类变量和数值变量的分配来显示垂直方向的条带

sns.stripplot(data=tips, x="day", y="total_bill")
../_images/stripplot_5_0.png

在 0.12 版本之前,分类变量的级别默认情况下具有不同的颜色。要获得相同的效果,请显式分配 hue 变量

sns.stripplot(data=tips, x="total_bill", y="day", hue="day", legend=False)
../_images/stripplot_7_0.png

或者,您可以为 hue 分配一个不同的变量以显示多维关系

sns.stripplot(data=tips, x="total_bill", y="day", hue="sex")
../_images/stripplot_9_0.png

如果 hue 变量是数值的,它将默认情况下使用定量调色板映射(请注意,在 0.12 版本之前并非如此)

sns.stripplot(data=tips, x="total_bill", y="day", hue="size")
../_images/stripplot_11_0.png

使用 palette 来控制颜色映射,包括通过传递定性调色板的名称来强制进行分类映射

sns.stripplot(data=tips, x="total_bill", y="day", hue="size", palette="deep")
../_images/stripplot_13_0.png

默认情况下,hue 变量的不同级别在每个条带中相互交织,但设置 dodge=True 将把它们分开

sns.stripplot(data=tips, x="total_bill", y="day", hue="sex", dodge=True)
../_images/stripplot_15_0.png

可以通过设置 jitter=False 来禁用随机抖动

sns.stripplot(data=tips, x="total_bill", y="day", hue="sex", dodge=True, jitter=False)
../_images/stripplot_17_0.png

如果以宽格式模式绘制,数据框的每个数值列将映射到 xhue

sns.stripplot(data=tips)
../_images/stripplot_19_0.png

要更改宽格式模式下的方向,请显式传递 orient

sns.stripplot(data=tips, orient="h")
../_images/stripplot_21_0.png

当两个轴变量都是数值时,orient 参数也很有用,因为它将解决关于对哪个维度进行分组(和抖动)的歧义

sns.stripplot(data=tips, x="total_bill", y="size", orient="h")
../_images/stripplot_23_0.png

默认情况下,分类变量将映射到具有固定比例的离散索引 (0, 1, …) ,即使它是数值的

sns.stripplot(
    data=tips.query("size in [2, 3, 5]"),
    x="total_bill", y="size", orient="h",
)
../_images/stripplot_25_0.png

要禁用此行为并使用变量的原始比例,请设置 native_scale=True

sns.stripplot(
    data=tips.query("size in [2, 3, 5]"),
    x="total_bill", y="size", orient="h",
    native_scale=True,
)
../_images/stripplot_27_0.png

通过传递 matplotlib.axes.Axes.scatter() 的关键字参数可以实现进一步的视觉定制

sns.stripplot(
    data=tips, x="total_bill", y="day", hue="time",
    jitter=False, s=20, marker="D", linewidth=1, alpha=.1,
)
../_images/stripplot_29_0.png

要制作具有多个面的图,最好使用 catplot() 而不是直接使用 FacetGrid ,因为 catplot() 将确保分类变量和色调变量在每个面中都正确同步

sns.catplot(data=tips, x="time", y="total_bill", hue="sex", col="day", aspect=.5)
../_images/stripplot_31_0.png