误差带#

误差带使用一组汇总统计数据来概括定量值的误差范围,用面积表示。Altair 中的误差带可以用来聚合原始数据,也可以直接可视化聚合数据。

要创建误差带,请使用mark_errorband

误差带标记属性#

一个errorband标记定义可以包含以下属性

点击显示表格

属性

类型

描述

extent

ErrorBarExtent

带的范围。可用选项包括

  • "ci": 将带扩展到均值的置信区间。

  • "stderr": 带的大小设置为标准误差的值,从均值延伸。

  • "stdev": 带的大小设置为标准差的值,从均值延伸。

  • "iqr": 将带扩展到 q1 和 q3。

默认值: "stderr"

orient

方向

误差带的方向。通常会自动确定,但在方向不明确且无法自动确定时可以指定。

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] 之间)。

interpolate

插值

误差带的线条插值方法。以下之一:

  • "linear": 分段线性段,如折线。

  • "linear-closed": 闭合线性段以形成多边形。

  • "step": 分段常数函数(阶梯函数),由交替的水平线和垂直线组成。y 值在每对相邻 x 值的中间点变化。

  • "step-before": 分段常数函数(阶梯函数),由交替的水平线和垂直线组成。y 值在 x 值之前变化。

  • "step-after": 分段常数函数(阶梯函数),由交替的水平线和垂直线组成。y 值在 x 值之后变化。

  • "basis": B 样条,端点处控制点重复。

  • "basis-open": 开放 B 样条;可能不与起点或终点相交。

  • "basis-closed": 闭合 B 样条,如环状。

  • "cardinal": Cardinal 样条,端点处控制点重复。

  • "cardinal-open": 开放 Cardinal 样条;可能不与起点或终点相交,但会与其它控制点相交。

  • "cardinal-closed": 闭合 Cardinal 样条,如环状。

  • "bundle": 等同于 basis,不同之处在于使用张力参数来拉直样条。

  • "monotone": 保留 y 单调性的三次插值。

tension

数字

误差带插值类型的张力参数。

除了上面列出的属性外,还可以使用bandborders来指定误差带不同部分的底层标记属性。

比较误差带与误差条的用法#

误差带的所有属性和用法与误差条相同,除了用bandborders替换了误差条的ruleticks

误差带

import altair as alt
from vega_datasets import data

source = data.cars.url

alt.Chart(source).mark_errorband(extent="ci", borders=True).encode(
    x="year(Year)",
    y=alt.Y(
        "Miles_per_Gallon:Q",
        scale=alt.Scale(zero=False),
        title="Miles per Gallon (95% CIs)",
    ),
)

误差条

import altair as alt
from vega_datasets import data

source = data.cars.url

alt.Chart(source).mark_errorbar(extent="ci", ticks=True).encode(
    x="year(Year)",
    y=alt.Y(
        "Miles_per_Gallon:Q",
        scale=alt.Scale(zero=False),
        title="Miles per Gallon (95% CIs)",
    ),
)

使用误差带来聚合原始数据#

如果数据尚未聚合,Altair 将根据标记定义中的extent属性聚合数据,就像上面显示置信区间的误差带一样。所有其他extent值在误差条中定义。

使用误差带来可视化聚合数据#

1. 数据已用误差带的低值和高值聚合 如果数据已预聚合,包含误差带的低值和高值,你可以直接指定xx2(或yy2),将误差带用作范围标记。

import altair as alt
import pandas as pd

source = pd.DataFrame(
    {
        "ci1": [23.5007, 25.8214, 26.4472, 27.7074],
        "ci0": [19.6912, 20.8554, 21.9749, 22.6203],
        "center": [21.5735, 23.3750, 24.0611, 25.0931],
        "Year": [189302400000, 220924800000, 252460800000, 283996800000],
    }
)

band = alt.Chart(source).mark_errorband().encode(
    alt.Y(
        "ci1:Q",
        scale=alt.Scale(zero=False),
        title="Mean of Miles per Gallon (95% CIs)"
    ),
    alt.Y2("ci0:Q"),
    alt.X("year(Year)"),
)

line = alt.Chart(source).mark_line().encode(
    alt.Y("center:Q"),
    alt.X("year(Year)")
)

band + line

2. 数据已用中心值和误差值聚合 如果数据已预聚合,包含误差带的中心值和误差值,你可以使用x/yx/yErrorx/yError2,这些在误差条中定义。

维度#

Altair 支持一维和二维误差带

一维误差带显示连续字段的误差范围;它可以用来显示整个图表的全局误差范围。

import altair as alt
from vega_datasets import data

source = data.cars.url

band = alt.Chart(source).mark_errorband(extent="stdev").encode(
    alt.Y("Miles_per_Gallon:Q").title("Miles per Gallon")
)

points = alt.Chart(source).mark_point().encode(
    x="Horsepower:Q",
    y="Miles_per_Gallon:Q",
)

band + points

二维误差带显示连续字段针对每个维度值(如年份)的误差范围。

import altair as alt
from vega_datasets import data

source = data.cars()

line = alt.Chart(source).mark_line().encode(
    x="Year",
    y="mean(Miles_per_Gallon)"
)

band = alt.Chart(source).mark_errorband(extent="ci").encode(
    x="Year",
    y=alt.Y("Miles_per_Gallon").title("Miles/Gallon"),
)

band + line

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

你可以通过使用coloropacity编码通道来自定义带的颜色和不透明度。

这里有一个errorband的例子,其中color编码通道被设置为alt.value('black')

import altair as alt
from vega_datasets import data

source = data.cars.url

alt.Chart(source).mark_errorband(extent="ci", borders=True).encode(
    x="year(Year)",
    y=alt.Y("Miles_per_Gallon:Q")
        .scale(zero=False)
        .title("Miles per Gallon (95% CIs)"),
    color=alt.value("black")
)