【问题标题】:How to display normalized categories in Altair stacked bar chart tooltip如何在 Altair 堆积条形图工具提示中显示标准化类别
【发布时间】:2020-12-10 05:34:54
【问题描述】:

我正在使用数据框列中分类字段的计数创建堆积条形图。

 chart = alt.Chart(df2).mark_bar().encode(
            x="take__take:O",
            y=alt.Y('count(name)', stack="normalize", axis=alt.Axis(title="Percent", format="%")),
            color=alt.Color('name', sort=alt.EncodingSortField('value', order='descending')),
            order=alt.Order(
                'value',
                sort="ascending"
            ),
            tooltip=[
                alt.Tooltip('count(name)', title="Total Students")
            ]
        )

如何在工具提示中获取标准化计数?

【问题讨论】:

    标签: altair


    【解决方案1】:

    到目前为止,您的图表使用编码速记来计算各种聚合;对于更复杂的操作(例如在工具提示中显示标准化值),您需要直接使用transforms

    以下是在工具提示中显示每组百分比的示例,使用的图表类似于您上面显示的图表:

    import altair as alt
    import numpy as np
    import pandas as pd
    
    np.random.seed(0)
    
    df2 = pd.DataFrame({
        'name': np.random.choice(['A', 'B', 'C', 'D'], size=100),
        'value': np.random.randint(0, 20, 100),
        'take__take': np.random.randint(0, 5, 100)
    })
    
    alt.Chart(df2).transform_aggregate(
        count='count()',
        groupby=['name', 'take__take']
    ).transform_joinaggregate(
        total='sum(count)',
        groupby=['take__take']  
    ).transform_calculate(
        frac=alt.datum.count / alt.datum.total
    ).mark_bar().encode(
        x="take__take:O",
        y=alt.Y('count:Q', stack="normalize", axis=alt.Axis(title="Percent", format="%")),
        color='name:N',
        tooltip=[
            alt.Tooltip('count:Q', title="Total Students"),
            alt.Tooltip('frac:Q', title="Percentage of Students", format='.0%')
        ]
    )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-03-15
      • 1970-01-01
      • 2017-02-26
      • 1970-01-01
      • 2013-09-15
      • 1970-01-01
      • 2021-05-26
      相关资源
      最近更新 更多