使用 Altair 生成具有已堆叠数据的未堆叠条形图
Using Altair to generate an unstacked barplot with an already stacked data
我创建了一个包含堆叠数据的 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
列并使用 tested
和 untested
列生成图表,但我想知道我是否可以在不转换数据的情况下实现这个结果。
要创建非堆叠条形图,您可以设置 stack=False
:
alt.Chart(dfm).mark_bar().encode(
x='date:O',
y=alt.Y('value:Q', stack=False),
color='variable:O'
)
请注意,它始终会在顶部显示最右边的列(上图中的tested
)。
我创建了一个包含堆叠数据的 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
列并使用 tested
和 untested
列生成图表,但我想知道我是否可以在不转换数据的情况下实现这个结果。
要创建非堆叠条形图,您可以设置 stack=False
:
alt.Chart(dfm).mark_bar().encode(
x='date:O',
y=alt.Y('value:Q', stack=False),
color='variable:O'
)
请注意,它始终会在顶部显示最右边的列(上图中的tested
)。