更改下拉选择器上的选项时,Altair 不显示数据

问题描述 投票:0回答:1

我想使用 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

你能帮我吗?我不知道为什么它不起作用。 如果您需要更多信息,请告诉我。

python plot data-science visualization altair
1个回答
0
投票

第一个聚合转换返回一个新的聚合数据集,其中仅包含转换中引用的列。这意味着年份列会在该步骤中从数据中删除,这就是为什么它不能在之后的过滤器转换中使用的原因。将过滤器变换移到聚合变换之前:

    alt.Chart(africa_metadata).transform_filter(
        year_selector 
    ).transform_aggregate(
        count='count()',
        groupby=['lineage']
    )...
© www.soinside.com 2019 - 2024. All rights reserved.