Полосы погрешностей — Error Band
Полоса погрешностей показывает диапазон погрешности количественных значений через сводные статистики, представляя его областью. В Altair она может агрегировать исходные данные или напрямую отображать уже агрегированные.
Для создания используйте mark_errorband.
Свойства полосы погрешностей
Определение errorband поддерживает следующие свойства:
Нажмите, чтобы показать таблицу
| Свойство | Тип | Описание |
|---|---|---|
extent | ErrorBarExtent | Диапазон полосы: |
orient | Orientation | Ориентация полосы погрешностей. Обычно определяется автоматически; при неоднозначности, когда это невозможно, можно задать явно. |
color | anyOf(Color, Gradient, ExprRef) | Стандартный цвет. По умолчанию: ■ |
opacity | number | Непрозрачность примитива в диапазоне |
interpolate | Interpolate | Интерполяция полосы погрешностей:
|
tension | number | Параметр натяжения для выбранного типа интерполяции полосы погрешностей. |
Кроме них, 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.
Отображение агрегированных данных
- Данные содержат нижнюю и верхнюю границы полосы. Можно непосредственно задать 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
- Данные содержат центр и величины погрешности. Используйте
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")
)