Диаграммы размаха — Box Plot

Диаграмма размаха описывает распределение количественных значений набором сводных статистик. Черта внутри прямоугольника показывает медиану. Нижняя и верхняя границы прямоугольника соответствуют первому и третьему квартилям. Значение концов усов зависит от типа диаграммы.

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

Свойства диаграммы размаха

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

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

Границы усов. "min-max" использует минимум и максимум. Число задаёт множитель межквартильного размаха: усы идут от минимального до максимального значения внутри [Q1 - k * IQR, Q3 + k * IQR], где Q1 и Q3 — первый и третий квартили, IQR — Q3-Q1. По умолчанию: 1.5.

orientOrientation

Ориентация диаграммы размаха. Обычно определяется автоматически по типам полей в x и y. При неоднозначности можно задать orient явно. По умолчанию: "vertical".

sizenumber

Размер прямоугольника и черты медианы диаграммы размаха.

coloranyOf(Color, Gradient, ExprRef)

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

opacitynumber

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

Кроме них, box, median, rule, outliers и ticks позволяют задавать свойства примитивов отдельных частей диаграммы.

Типы диаграмм размаха

Altair поддерживает два типа, определяемые свойством extent.

  1. Диаграмма Тьюки используется по умолчанию. Усы идут от минимального до максимального значения внутри диапазона [Q1 - k * IQR, Q3 + k * IQR]. Здесь Q1 и Q3 — первый и третий квартили, IQR — межквартильный размах Q3-Q1. Множитель k задаётся через extent; по умолчанию он равен 1.5. Точки за пределами усов показываются отдельными примитивами point.
import altair as alt
from altair.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 altair.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 altair.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 — на всю диаграмму размаха.

Пример с каналом color:

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

Канал подсказки

Можно задать собственные подсказки, которые заменят стандартные.

Если поле tooltip не агрегировано, оно заменяет подсказки точек выбросов. Если поле агрегировано, оно заменяет подсказки прямоугольника и усов:

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