Полосы погрешностей — Error Band

Полоса погрешностей показывает диапазон погрешности количественных значений через сводные статистики, представляя его областью. В Altair она может агрегировать исходные данные или напрямую отображать уже агрегированные.

Для создания используйте mark_errorband.

Свойства полосы погрешностей

Определение errorband поддерживает следующие свойства:

Нажмите, чтобы показать таблицу
СвойствоТипОписание
extentErrorBarExtent

Диапазон полосы: "ci" — 95%-й доверительный интервал среднего, полученный бутстрэпом; "stderr" — стандартная ошибка вокруг среднего; "stdev" — стандартное отклонение вокруг среднего; "iqr" — от первого до третьего квартиля. По умолчанию: "stderr".

orientOrientation

Ориентация полосы погрешностей. Обычно определяется автоматически; при неоднозначности, когда это невозможно, можно задать явно.

coloranyOf(Color, Gradient, ExprRef)

Стандартный цвет. По умолчанию: ■ "#4682b4". Нельзя задавать в конфигурации стилей. Свойства fill и stroke имеют больший приоритет и переопределяют color.

opacitynumber

Непрозрачность примитива в диапазоне [0,1].

interpolateInterpolate

Интерполяция полосы погрешностей:

  • "linear" — прямые отрезки.
  • "linear-closed" — замкнутые отрезки, образующие многоугольник.
  • "step" — ступенчатая функция с чередующимися горизонтальными и вертикальными линиями; y меняется посередине между соседними x.
  • "step-before" — ступенчатая функция, в которой y меняется до значения x.
  • "step-after" — ступенчатая функция, в которой y меняется после значения x.
  • "basis" — B-сплайн с дублированием крайних контрольных точек.
  • "basis-open" — открытый B-сплайн, который может не проходить через начало и конец.
  • "basis-closed" — замкнутый B-сплайн.
  • "cardinal" — кардинальный сплайн с дублированием крайних контрольных точек.
  • "cardinal-open" — открытый кардинальный сплайн, который может не проходить через начало и конец, но проходит через остальные контрольные точки.
  • "cardinal-closed" — замкнутый кардинальный сплайн.
  • "bundle" — аналог basis, но tension используется для выпрямления сплайна.
  • "monotone" — кубическая интерполяция, сохраняющая монотонность по y.
tensionnumber

Параметр натяжения для выбранного типа интерполяции полосы погрешностей.

Кроме них, band и borders задают свойства примитивов отдельных частей полосы.

Сравнение Error Band и Error Bar

Свойства и применение совпадают с интервалами погрешностей, кроме band и borders, которые заменяют rule и ticks.

Полоса погрешностей — Error Band:

import altair as alt
from altair.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)",
    ),
)

Интервалы погрешностей — Error Bar:

import altair as alt
from altair.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 описаны на странице Error Bar.

Отображение агрегированных данных

  1. Данные содержат нижнюю и верхнюю границы полосы. Можно непосредственно задать x и x2 либо y и y2, используя полосу как примитив с диапазоном:
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
  1. Данные содержат центр и величины погрешности. Используйте x/y, x/yError и x/yError2, как описано для Error Bar.

Размерность

Altair поддерживает одномерные и двумерные полосы погрешностей.

Одномерная полоса показывает диапазон погрешности непрерывного поля и может обозначать общий диапазон всей диаграммы:

import altair as alt
from altair.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 altair.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

Каналы цвета и непрозрачности

Цвет и непрозрачность полос задаются каналами color и opacity. Здесь color равен alt.value('black'):

import altair as alt
from altair.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")
)