Дуги — Arc

Примитивы arc — круговые дуги, определяемые центральной точкой, угловыми и радиальными границами. Обычно они используются для радиальных визуализаций: круговых и кольцевых диаграмм.

Свойства дуг

Определение arc поддерживает любые стандартные свойства и следующие специальные свойства:

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

Для arc — основной внешний радиус в пикселях. Для text — радиальное смещение текста в полярных координатах от начала, заданного x и y. По умолчанию: min(plot_width, plot_height)/2.

radius2anyOf(number, ExprRef)

Второй, внутренний радиус дуги в пикселях. По умолчанию: 0.

innerRadiusanyOf(number, ExprRef)

Внутренний радиус дуги в пикселях; псевдоним radius2. По умолчанию: 0.

outerRadiusanyOf(number, ExprRef)

Внешний радиус дуги в пикселях; псевдоним radius. По умолчанию: 0.

thetaanyOf(number, ExprRef)

Для arc — угловая длина дуги в радианах, если theta2 не задан, иначе начальный угол. Ноль направлен вверх, или на север; положительные значения идут по часовой стрелке. Для text — угол в полярных координатах, в радианах.

theta2anyOf(number, ExprRef)

Конечный угол дуги в радианах. Ноль направлен вверх, или на север; положительные значения идут по часовой стрелке.

cornerRadiusanyOf(number, ExprRef)

Радиус скругления углов прямоугольников или дуг в пикселях. По умолчанию: 0.

padAngleanyOf(number, ExprRef)

Угловой отступ по сторонам дуги, в радианах.

radiusOffsetanyOf(number, ExprRef)

Смещение radius.

radius2OffsetanyOf(number, ExprRef)

Смещение radius2.

thetaOffsetanyOf(number, ExprRef)

Смещение theta.

theta2OffsetanyOf(number, ExprRef)

Смещение theta2.

Примеры

Круговую диаграмму можно создать, задав для дуг кодирование theta или color:

import pandas as pd
import altair as alt

source = pd.DataFrame({"category": [1, 2, 3, 4, 5, 6], "value": [4, 6, 10, 3, 7, 8]})

alt.Chart(source).mark_arc().encode(
    theta=alt.Theta(field="value", type="quantitative"),
    color=alt.Color(field="category", type="nominal"),
)

Ненулевой innerRadius превращает её в кольцевую диаграмму:

import pandas as pd
import altair as alt

source = pd.DataFrame({"category": [1, 2, 3, 4, 5, 6], "value": [4, 6, 10, 3, 7, 8]})

alt.Chart(source).mark_arc(innerRadius=50).encode(
    theta=alt.Theta(field="value", type="quantitative"),
    color=alt.Color(field="category", type="nominal"),
)

Для подписей можно добавить текстовый слой:

import pandas as pd
import altair as alt

source = pd.DataFrame(
    {"category": ["a", "b", "c", "d", "e", "f"], "value": [4, 6, 10, 3, 7, 8]}
)

base = alt.Chart(source).encode(
    theta=alt.Theta("value:Q").stack(True),
    color=alt.Color("category:N").legend(None),
)

pie = base.mark_arc(outerRadius=120)
text = base.mark_text(radius=140, size=20).encode(
    text="category:N"
)

pie + text