【问题标题】:Using Altair to generate an unstacked barplot with an already stacked data使用 Altair 生成带有已堆叠数据的未堆叠条形图
【发布时间】:2021-12-28 14:27:03
【问题描述】:

我创建了一个包含堆叠数据的 DataFrame,即总共测试过。

import pandas as pd
import altair as alt

df = pd.DataFrame({
  'date': ['2021-01-01', '2021-02-01', '2021-03-01'],
  'total': [10, 15, 20],
  'tested': [0, 5, 10]
})

dfm = df.melt(id_vars=['date'])

我想用 Altair 绘制一个堆积条形图。由于tested 列已包含在total 列中,我希望有一个包含total 最大值的图表,但结果显示总和。

alt.Chart(dfm).mark_bar().encode(
    x='date:O',
    y='value:Q',
    color='variable:O'
)

我知道我可以使用 pandas 创建一个 untested 列并使用 testeduntested 列生成绘图,但我想知道是否可以在不转换数据的情况下实现此结果。

【问题讨论】:

    标签: python pandas altair


    【解决方案1】:

    要创建非堆叠条形图,您可以设置stack=False:

    alt.Chart(dfm).mark_bar().encode(
        x='date:O',
        y=alt.Y('value:Q', stack=False),
        color='variable:O'
    )
    

    请注意,它始终会在顶部显示最右边的列(上图中的tested)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-01-31
      • 1970-01-01
      • 1970-01-01
      • 2012-05-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-11
      相关资源
      最近更新 更多