首页 > 解决方案 > 基于布尔值列 Altair 的堆积条形图

问题描述

我正在尝试做类似下面的事情。

按日期列分组,例如年或年/月。并根据真/假值可视化堆积条形图。

在 Altair 中解决此问题的最佳方法是什么?

df = pd.DataFrame({
    'date': ['20-03-2017', '20-03-2017', '20-03-2018', '21-03-2018', '20-10-2019', '20-03-2019', '1-02-2019', '10-03-2020', '20-06-2020'],
    'value': [True, True, True, False, True, False, False, True, False]
})

import altair as alt
alt.Chart(df).mark_bar().encode(
    x = 'groupbyyear(date)',
    y = 'count(value)',
    color = 'value'
)

标签: pandasaltair

解决方案


您非常接近:groupbyyear您可以使用year time unit transform代替,并且由于您的日期是非标准格式,您可以首先使用 pandasto_datetime将它们转换为标准日期值。结果如下所示:

import altair as alt
import pandas as pd

df = pd.DataFrame({
    'date': ['20-03-2017', '20-03-2017', '20-03-2018', '21-03-2018', '20-10-2019', '20-03-2019', '1-02-2019', '10-03-2020', '20-06-2020'],
    'value': [True, True, True, False, True, False, False, True, False]
})

df['date'] = pd.to_datetime(df['date'])

alt.Chart(df).mark_bar().encode(
    x = 'year(date):O',
    y = 'count(value)',
    color = 'value'
)

在此处输入图像描述


推荐阅读