Дуги — Arc
Примитивы arc — круговые дуги, определяемые центральной точкой, угловыми и радиальными границами. Обычно они используются для радиальных визуализаций: круговых и кольцевых диаграмм.
Свойства дуг
Определение arc поддерживает любые стандартные свойства и следующие специальные свойства:
Нажмите, чтобы показать таблицу
| Свойство | Тип | Описание |
|---|---|---|
radius | anyOf(number, ExprRef) | Для arc — основной внешний радиус в пикселях. Для text — радиальное смещение текста в полярных координатах от начала, заданного x и y. По умолчанию: |
radius2 | anyOf(number, ExprRef) | Второй, внутренний радиус дуги в пикселях. По умолчанию: |
innerRadius | anyOf(number, ExprRef) | Внутренний радиус дуги в пикселях; псевдоним |
outerRadius | anyOf(number, ExprRef) | Внешний радиус дуги в пикселях; псевдоним |
theta | anyOf(number, ExprRef) | Для arc — угловая длина дуги в радианах, если |
theta2 | anyOf(number, ExprRef) | Конечный угол дуги в радианах. Ноль направлен вверх, или на север; положительные значения идут по часовой стрелке. |
cornerRadius | anyOf(number, ExprRef) | Радиус скругления углов прямоугольников или дуг в пикселях. По умолчанию: |
padAngle | anyOf(number, ExprRef) | Угловой отступ по сторонам дуги, в радианах. |
radiusOffset | anyOf(number, ExprRef) | Смещение radius. |
radius2Offset | anyOf(number, ExprRef) | Смещение radius2. |
thetaOffset | anyOf(number, ExprRef) | Смещение theta. |
theta2Offset | anyOf(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