[英]Can you change the data itself in an interactive Altair plot?
我希望能夠修改繪制圖表的基礎數據。 例如,我有:
df = pd.DataFrame({
'xval': ['full', 'empty'],
'yval': [25, 75],
})
slider = alt.binding_range(min=0, max=100, step=1, name='cutoff:')
selector = alt.selection_single(name="SelectorName", fields=['cutoff'],
bind=slider, init={'cutoff': 25})
(
alt.Chart(df)
.mark_bar()
.encode(
x='xval',
y='yval',
)
.properties(title='Glass %')
.add_selection(
selector
)
)
這給出了一個條形圖,顯示一杯滿的百分比是:
我希望能夠拖動 slider 並讓它更改滿(和空)百分比。 就像是:
...
.encode(
x='xval',
y=alt.condition(
alt.datum.xval == 'full',
'xval', 100-'xval'
)
)
...
……但那是不合法的。 Altair 是否支持這種類型的交互? 我在文檔中沒有看到類似的內容。
您可以在計算轉換中引用選擇器值; 嘗試這樣的事情:
(
alt.Chart(df)
.transform_calculate(
yval = "datum.xval == 'full' ? SelectorName.cutoff : 100 - SelectorName.cutoff"
)
.mark_bar()
.encode(
x='xval',
y=alt.Y('yval', scale={'domain': [0, 100]})
)
.properties(title='Glass %')
.add_selection(
selector
)
)
您可以將轉換過濾器與選擇器值一起使用:
(
alt.Chart(df)
.mark_bar()
.encode(
x='xval',
y='yval',
)
.properties(title='Glass %')
.add_selection(selector)
.transform_filter(alt.datum.yval < selector.cutoff)
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.