Код: Выделить всё
vega
Код: Выделить всё
import altair as alt
import numpy as np
import polars as pl
selection = alt.selection_interval(encodings=["x"])
base = (
alt.Chart(
pl.DataFrame(
{
"x": list(np.random.rand(100)),
"y": list(np.random.rand(100)),
"class": list(np.random.choice(["A", "B"], 100)),
}
)
)
.mark_point(filled=True)
.encode(
color=alt.condition(
selection, alt.Color("class:N"), alt.value("lightgray")
),
)
.add_params(selection)
)
alt.hconcat(
base.encode(x="x:Q", y="y:Q"),
(
base.transform_filter(selection)
.mark_arc()
.encode(theta="count()", color="class:N")
),
)

Теперь я хотел бы добавить еще две диаграммы, которые показывают соотношение выбранных/невыделенных точек для каждого цвета. Т.е. одна круговая диаграмма оранжевого/серого цвета и одна круговая диаграмма синего/серого цвета с соотношениями, зависящими от количества выбранных точек.
Я пытался использовать выбор следующим образом
Код: Выделить всё
(
base.mark_arc().encode(
theta="count()",
color=alt.condition(
selection, alt.Color("class:N"), alt.value("gray")
),
row="class:N",
)
),
[img]https://i.sstatic. net/rUYM2fOk.png[/img]
Как лучше всего добавить нужные мне круговые диаграммы?
Подробнее здесь: https://stackoverflow.com/questions/791 ... ltair-char