我想使用 Altair 图表根据年份显示特定功能的计数,并且我想通过选择年份作为下拉选择器的选项来实现。它可以与“无”选项配合使用(因此它选择整个数据集),但当我切换年份时不会显示任何内容。
您可以在下面看到它何时有效、何时无效: 什么时候起作用 当它不起作用时
这是我的代码:
year_dropdown = alt.binding_select(
options = [None] + list(africa_metadata.year.unique()),
labels = ["All"] +list(africa_metadata.year.unique()),
name="Année:"
)
year_selector = alt.selection_point(
fields = ['year'],
bind = year_dropdown,
name="year_selection"
)
(
alt.Chart(africa_metadata).transform_aggregate(
count='count()',
groupby=['lineage']
).transform_window(
rank_lineage="rank(count)",
sort=[alt.SortField("count", order="descending")]
).add_params(
year_selector
).transform_filter(
year_selector
).transform_filter(
'datum.rank_lineage<=10'
).mark_bar(
).encode(
alt.X('lineage:N', sort=alt.EncodingSortField(op='count', order='descending')),
alt.Y('count:Q'),
alt.Color("lineage:N")
)
)
这是我的数据集的一部分: 数据集.head(3)
accession continent completeness length lineage date year month country region
0 PP518589.1 Africa COMPLETE 29822 A 2020-05-09 2020 05 South Africa None
242 OQ050567.1 Africa COMPLETE 29859 A 2020-05-08 2020 05 Nigeria None
243 OQ050560.1 Africa COMPLETE 29823 A 2020-05-10 2020 05 Nigeria None
244 OQ050510.1 Africa COMPLETE 29875 A 2020-05-08 2020 05 Nigeria None
245 OQ050499.1 Africa COMPLETE 29824 A 2020-04-26 2020 04 Nigeria None
246 OQ050495.1 Africa COMPLETE 29841 A 2020-04-19 2020 04 Nigeria None
247 OQ050456.1 Africa COMPLETE 29845 A 2020-04-23 2020 04 Nigeria None
248 OQ050409.1 Africa COMPLETE 29855 A 2020-03-29 2020 03 Nigeria None
249 OQ050383.1 Africa COMPLETE 29831 A 2020-03-25 2020 03 Nigeria None
250 OQ050376.1 Africa COMPLETE 29768 A 2020-03-29 2020 03 Nigeria None
你能帮我吗?我不知道为什么它不起作用。 如果您需要更多信息,请告诉我。
第一个聚合转换返回一个新的聚合数据集,其中仅包含转换中引用的列。这意味着年份列会在该步骤中从数据中删除,这就是为什么它不能在之后的过滤器转换中使用的原因。将过滤器变换移到聚合变换之前:
alt.Chart(africa_metadata).transform_filter(
year_selector
).transform_aggregate(
count='count()',
groupby=['lineage']
)...