Я хотел бы построить часть моего фрейма данных в зависимости от значения ползунка (т. Е. Ползунок фильтрует строки, которые имеют совпадающее значение в определенном столбце). В некоторых строках отсутствует значение в столбце, который используется для фильтрации. Я хотел бы, чтобы эти строки всегда отображались на графике - независимо от ползунка.
Вот код для пояснения. Столбец, используемый для фильтрации, в этом примере называется parameter
.
In [1]: import altair as alt
import pandas as pd
In [2]: df_with_parameter_col = pd.DataFrame(
{
"x": [1, 1],
"y": [2, 3],
"parameter": [2, 3]
}
)
df_without_parameter_col = pd.DataFrame(
{
"x": [1],
"y": [1]
}
)
In [3]: df = pd.concat([df_with_parameter_col,
df_without_parameter_col])
df
Out [3]: x y parameter
0 1 2 2.0
1 1 3 3.0
0 1 1 NaN
In [4]: slider_parameter = alt.binding_range(min=2, max=3, step=1, name="Parameter ")
select_parameter = alt.selection_single(
fields=["parameter"],
bind={"parameter": slider_parameter},
init={"parameter": 2},
name="Slider"
)
chart = alt.Chart(df).mark_point().encode(
y="y",
x="x",
).add_selection(
select_parameter
).transform_filter(
select_parameter
)
Данные в строке с отсутствующим значением в столбце parameter
никогда не отображаются. Одним из способов решения этой проблемы является дублирование этой строки для каждого возможного значения ползунка и изменение значения NaN на значение, которое может соответствовать значению ползунка. Однако это было бы очень расточительно с точки зрения памяти. Есть ли лучшее решение?