箱线图#
箱线图使用一组汇总统计量来概括定量值的分布。箱体中的中位数标记表示中位数。箱体的下部和上部分别表示第一四分位数和第三四分位数。根据箱线图的类型,须的末端可以代表多种事物。
要创建箱线图,请使用 mark_boxplot
方法。
箱线图标记属性#
箱线图的标记定义可以包含以下属性
点击显示表格
属性 |
类型 |
描述 |
---|---|---|
extent |
anyOf( |
须的范围。可用选项包括
默认值: |
orient |
箱线图的方向。这通常是根据 x 和 y 通道上的字段类型自动确定的。但是,当方向不明确时,可以显式指定 默认值: |
|
size |
|
箱线图箱体和中位数标记的大小 |
color |
默认颜色。 默认值: :raw-html: 注意
|
|
opacity |
|
标记的不透明度(值介于 [0,1] 之间)。 |
除了上面列出的属性之外,还可以使用 box
、median
、rule
、outliers
和 ticks
来指定箱线图不同部分的底层标记属性。
箱线图的类型#
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)
)
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 轴上,则箱线图将为水平方向。
颜色、大小和不透明度编码通道#
可以使用 color
、size
和 opacity
编码通道自定义箱线图中箱体的颜色、大小和不透明度。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)"),
)