Altair 条形图 - 如何显示缺失的类别
Altair Bar Chart - how to show missing categories
我有下面这张图表,看起来不错。
然而,X 轴上的类别“2”已被省略,因为数据框中没有可用数据。
在 Altair 中执行此操作的最佳方法是什么?
我希望“2”提前期显示为空 space/column(与列宽度相同)。
import altair as alt
alt.Chart(data).mark_bar().encode(
x='leadtime:O',
y='value',
color='category'
)
数据
leadtime category value
1 cat1 1
1 cat2 1
1 cat3 1
1 cat4 2
1 cat5 2
1 cat6 0.5
1 cat7 3
3 cat1 2
3 cat2 3
3 cat3 2
3 cat4 4
3 cat5 5
3 cat6 0.5
3 cat7 6
4 cat1 2
4 cat2 4
4 cat3 2
4 cat4 7
4 cat5 8
4 cat6 8
4 cat7 3
您可以通过两种方式做到这一点,要么在 y:
中使用 impute transform
alt.Chart(data).mark_bar().encode(
x='leadtime:O',
color='category',
y=alt.Y('value',
impute=alt.ImputeParams(
value=0,
keyvals=[1, 2, 3, 4]
)
),
)
或在 x:
中设置明确的 scale domain
alt.Chart(data).mark_bar().encode(
x=alt.X('leadtime:O', scale=alt.Scale(domain=[1, 2, 3, 4])),
y='value',
color='category',
)
我有下面这张图表,看起来不错。 然而,X 轴上的类别“2”已被省略,因为数据框中没有可用数据。
在 Altair 中执行此操作的最佳方法是什么? 我希望“2”提前期显示为空 space/column(与列宽度相同)。
import altair as alt
alt.Chart(data).mark_bar().encode(
x='leadtime:O',
y='value',
color='category'
)
数据
leadtime category value
1 cat1 1
1 cat2 1
1 cat3 1
1 cat4 2
1 cat5 2
1 cat6 0.5
1 cat7 3
3 cat1 2
3 cat2 3
3 cat3 2
3 cat4 4
3 cat5 5
3 cat6 0.5
3 cat7 6
4 cat1 2
4 cat2 4
4 cat3 2
4 cat4 7
4 cat5 8
4 cat6 8
4 cat7 3
您可以通过两种方式做到这一点,要么在 y:
中使用 impute transformalt.Chart(data).mark_bar().encode(
x='leadtime:O',
color='category',
y=alt.Y('value',
impute=alt.ImputeParams(
value=0,
keyvals=[1, 2, 3, 4]
)
),
)
或在 x:
中设置明确的 scale domainalt.Chart(data).mark_bar().encode(
x=alt.X('leadtime:O', scale=alt.Scale(domain=[1, 2, 3, 4])),
y='value',
color='category',
)