请参见下面的示例。我想发生的是,条形图(右)始终显示所有xlabel(从A到Z),无论它们是否存在于选择中(在左图中)。我在网上找到了很多有关格式化标签的信息,但没有有关设置标签的信息。我可以以某种方式手动设置xlabel,还是将未经过滤的数据用作xlabel的基础?
import altair as alt
import pandas as pd
import random
import string
random.seed(42)
consultation_dates = pd.date_range(start='1/1/2018', end='1/08/2020')
disease_codes = random.choices(string.ascii_uppercase, k=len(consultation_dates))
consultation_weights = [random.randint(1, 4) for i in range(len(consultation_dates))]
df = pd.DataFrame({'date': consultation_dates,
'disease_code': disease_codes,
'consultation_weight': consultation_weights})
selected_range = alt.selection_interval(encodings=['x'])
use_over_time = alt.Chart(df).mark_area().encode(
x='yearquarter(date):Q',
y='sum(consultation_weight):Q'
).add_selection(
selected_range
)
use_by_disease = alt.Chart(df).mark_bar().encode(
x='disease_code:N',
y='sum(consultation_weight):Q'
).transform_filter(
selected_range
)
use_over_time | use_by_disease
答案 0 :(得分:0)
找到了我自己的答案。可以通过分层来完成!
import altair as alt
import pandas as pd
import random
import string
random.seed(42)
consultation_dates = pd.date_range(start='1/1/2018', end='1/08/2020')
disease_codes = random.choices(string.ascii_uppercase, k=len(consultation_dates))
consultation_weights = [random.randint(1, 4) for i in range(len(consultation_dates))]
df = pd.DataFrame({'date': consultation_dates,
'disease_code': disease_codes,
'consultation_weight': consultation_weights})
selected_range = alt.selection_interval(encodings=['x'])
use_over_time = alt.Chart(df).mark_area().encode(
x='yearquarter(date):Q',
y='sum(consultation_weight):Q'
).add_selection(
selected_range
)
use_by_disease_base = alt.Chart(df).mark_bar(opacity=0.3).encode(
x='disease_code:N',
y='sum(consultation_weight):Q',
color=alt.value('lightgray')
)
use_by_disease = alt.Chart(df).mark_bar(opacity=0.3).encode(
x='disease_code:N',
y='sum(consultation_weight):Q'
).transform_filter(
selected_range
)
use_over_time | (use_by_disease_base + use_by_disease)