连接时让 altair 滑块与绘图保持一致
Keep altair sliders with plots when concatenating
将 2 个图表与它们自己的滑块连接时,滑块在最后组合在一起。有没有办法让滑块保留在每个绘图中?
这里是一个例子,修改自文档
import altair.vegalite.v3 as alt
import pandas as pd
import numpy as np
rand = np.random.RandomState(42)
df = pd.DataFrame({"xval": range(100), "yval": rand.randn(100).cumsum()})
slider1 = alt.binding_range(min=0, max=100, step=1, name="cutoff1:")
selector1 = alt.selection_single(
name="SelectorName1", fields=["cutoff1"], bind=slider1, init={"cutoff1": 50}
)
slider2 = alt.binding_range(min=0, max=100, step=1, name="cutoff2:")
selector2 = alt.selection_single(
name="SelectorName2", fields=["cutoff2"], bind=slider2, init={"cutoff2": 50}
)
ch_base = (
alt.Chart(df)
.mark_point()
.encode(
x="xval",
y="yval",
color=alt.condition(
alt.datum.xval < selector1.cutoff1, alt.value("red"), alt.value("blue")
),
)
)
ch1 = ch_base.add_selection(selector1)
ch2 = ch_base.encode(
color=alt.condition(
alt.datum.xval < selector2.cutoff2, alt.value("red"), alt.value("blue")
)
).add_selection(selector2)
ch1 & ch2
如图所示,默认情况下,滑块彼此相邻分组:
滑块始终显示在完整图表的底部。目前无法更改此设置。
如果您希望此功能将来存在,我建议您在 Vega-Lite 中提交 feature request。
作为解决方法,您可以创建两个图表,并使用 vega-embed 将它们嵌入到一个文档中,尽管这样做时在两个图表之间传递信号并非易事。
将 2 个图表与它们自己的滑块连接时,滑块在最后组合在一起。有没有办法让滑块保留在每个绘图中?
这里是一个例子,修改自文档
import altair.vegalite.v3 as alt
import pandas as pd
import numpy as np
rand = np.random.RandomState(42)
df = pd.DataFrame({"xval": range(100), "yval": rand.randn(100).cumsum()})
slider1 = alt.binding_range(min=0, max=100, step=1, name="cutoff1:")
selector1 = alt.selection_single(
name="SelectorName1", fields=["cutoff1"], bind=slider1, init={"cutoff1": 50}
)
slider2 = alt.binding_range(min=0, max=100, step=1, name="cutoff2:")
selector2 = alt.selection_single(
name="SelectorName2", fields=["cutoff2"], bind=slider2, init={"cutoff2": 50}
)
ch_base = (
alt.Chart(df)
.mark_point()
.encode(
x="xval",
y="yval",
color=alt.condition(
alt.datum.xval < selector1.cutoff1, alt.value("red"), alt.value("blue")
),
)
)
ch1 = ch_base.add_selection(selector1)
ch2 = ch_base.encode(
color=alt.condition(
alt.datum.xval < selector2.cutoff2, alt.value("red"), alt.value("blue")
)
).add_selection(selector2)
ch1 & ch2
如图所示,默认情况下,滑块彼此相邻分组:
滑块始终显示在完整图表的底部。目前无法更改此设置。
如果您希望此功能将来存在,我建议您在 Vega-Lite 中提交 feature request。
作为解决方法,您可以创建两个图表,并使用 vega-embed 将它们嵌入到一个文档中,尽管这样做时在两个图表之间传递信号并非易事。