【问题标题】:Agregate functions block plot interactivity in AltairAltair 中的聚合函数块图交互性
【发布时间】:2020-08-01 11:30:47
【问题描述】:

考虑以下代码改编自:Altair website

import altair as alt
import pandas as pd

source = pd.DataFrame({
    'a': ['A', 'B', 'B', 'B', 'E', 'F', 'G', 'H', 'I'],
    'b': [28, 55, 43, 91, 81, 53, 19, 87, 52]
})

alt.Chart(source).mark_bar().encode(
    x='a',
    y='b:Q'
).interactive()

输出此图:

这是交互式(我们可以放大)。但是,如果我 将 Y 编码字段 更改为以下(这是我需要的) - 通过添加聚合函数:

import altair as alt
import pandas as pd

source = pd.DataFrame({
    'a': ['A', 'B', 'B', 'B', 'E', 'F', 'G', 'H', 'I'],
    'b': [28, 55, 43, 91, 81, 53, 19, 87, 52]
})

alt.Chart(source).mark_bar().encode(
    x='a',
    y='sum(b):Q'
).interactive()

情节不再互动。是否可以在使用聚合函数时使其具有交互性,即:移动、放大、缩小?

谢谢你:)

【问题讨论】:

    标签: python interactive altair


    【解决方案1】:

    这是 Vega/Vega-Lite 中的一个已知限制;见https://github.com/vega/vega-lite/issues/5308

    作为一种解决方法,您可以将预先聚合的数据传递给图表:

    import altair as alt
    import pandas as pd
    
    source = pd.DataFrame({
        'a': ['A', 'B', 'B', 'B', 'E', 'F', 'G', 'H', 'I'],
        'b': [28, 55, 43, 91, 81, 53, 19, 87, 52]
    })
    
    data = source.groupby('a').sum().reset_index()
    
    alt.Chart(data).mark_bar().encode(
        x='a',
        y=alt.Y('b', title='Sum of b')
    ).interactive()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-09
      • 2019-08-13
      相关资源
      最近更新 更多