簡體   English   中英

您可以在交互式 Altair plot 中更改數據本身嗎?

[英]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
    )
)

這給出了一個條形圖,顯示一杯滿的百分比是:

“玻璃杯已滿 x%”圖表

我希望能夠拖動 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM