箱线图#

箱线图使用一组汇总统计量来概括定量值的分布。箱体中的中位数标记表示中位数。箱体的下部和上部分别表示第一四分位数和第三四分位数。根据箱线图的类型,须的末端可以代表多种事物。

要创建箱线图,请使用 mark_boxplot 方法。

箱线图标记属性#

箱线图的标记定义可以包含以下属性

点击显示表格

属性

类型

描述

extent

anyOf(string, number)

须的范围。可用选项包括

  • "min-max": 最小值和最大值分别作为下须和上须。

  • 表示四分位距倍数的一个数字。这个数字将乘以 IQR 来确定须的边界,须的范围从最小值到最大值,在区间 [Q1 - k * IQR, Q3 + k * IQR] 内,其中 Q1Q3 是第一和第三四分位数,而 IQR 是四分位距(Q3-Q1)。

默认值: 1.5

orient

方向

箱线图的方向。这通常是根据 x 和 y 通道上的字段类型自动确定的。但是,当方向不明确时,可以显式指定 orient

默认值: "vertical"

size

数字

箱线图箱体和中位数标记的大小

color

anyOf(Color, Gradient, ExprRef)

默认颜色。

默认值: :raw-html:<span style="color: #4682b4;"> ■ :raw-html:</span> "#4682b4"

注意

  • 此属性不能用于 style config <https://vega.github.io/vega-lite/docs/mark.html#style-config>__。

  • fillstroke 属性具有比 color 更高的优先级,并将覆盖 color

opacity

数字

标记的不透明度(值介于 [0,1] 之间)。

除了上面列出的属性之外,还可以使用 boxmedianruleoutliersticks 来指定箱线图不同部分的底层标记属性。

箱线图的类型#

Altair 支持两种类型的箱线图,由标记定义对象中的 extent 属性定义。

1. Tukey 箱线图是 Altair 中的默认箱线图。对于 Tukey 箱线图,须的范围从最小值到最大值,在区间 [Q1 - k * IQR, Q3 + k * IQR] 内,其中 Q1 和 Q3 是第一和第三四分位数,而 IQR 是四分位距 (Q3-Q1)。在这种类型的箱线图中,可以通过设置 extent 来指定常数 k。如果须之外存在离群点,将使用点标记显示。默认情况下,extent 为 1.5

import altair as alt
from vega_datasets import data

source = data.cars()

alt.Chart(source).mark_boxplot().encode(
    alt.X("Miles_per_Gallon:Q").scale(zero=False)
)
  1. min-max 箱线图是一种箱线图,其下须和上须分别定义为最小值和最大值。对于此类箱线图,不会将任何点视为离群值。

import altair as alt
from vega_datasets import data

source = data.cars()

alt.Chart(source).mark_boxplot(extent="min-max").encode(
    alt.X("Miles_per_Gallon:Q").scale(zero=False),
    alt.Y("Origin:N"),
)

维度和方向#

Altair 支持一维和二维箱线图

一维箱线图显示连续字段的分布。箱线图的方向由连续字段轴自动确定。例如,通过在 y 轴上编码连续字段,可以创建垂直的一维箱线图。

import altair as alt
from vega_datasets import data

source = data.cars()

alt.Chart(source).mark_boxplot().encode(
    alt.Y("Miles_per_Gallon:Q").scale(zero=False)
)

二维箱线图显示按类别细分的连续字段的分布。

对于包含一个连续字段和一个离散字段的二维箱线图,如果连续字段位于 x 轴上,则箱线图将为水平方向。

颜色、大小和不透明度编码通道#

可以使用 colorsizeopacity 编码通道自定义箱线图中箱体的颜色、大小和不透明度。size 仅应用于箱体和中位数标记。color 仅应用于箱体和离群点。同时,opacity 应用于整个 boxplot

指定了 color 编码通道的箱线图示例。

import altair as alt
from vega_datasets import data

source = data.cars()

alt.Chart(source).mark_boxplot(extent="min-max").encode(
    alt.X("Origin:N"),
    alt.Y("Miles_per_Gallon:Q").scale(zero=False),
    alt.Color("Origin:N").legend(None),
)

工具提示编码通道#

可以为箱线图添加自定义工具提示。自定义工具提示将覆盖默认箱线图的工具提示。

如果工具提示编码中的字段未聚合,它将替换离群点标记的工具提示。另一方面,如果工具提示编码中的字段已聚合,它将替换箱体和须标记的工具提示。

import altair as alt
from vega_datasets import data

source = data.cars()

alt.Chart(source).mark_boxplot(extent="min-max").encode(
    alt.X("Miles_per_Gallon:Q").scale(zero=False),
    alt.Y("Origin:N"),
    alt.Tooltip("mean(Miles_per_Gallon)"),
)