如何从给定的 table 创建下拉菜单

How to create a dropdown from the given table

我有以下内容table:(只给出了很多行的片段)

|name_id | house  |  school | duration  |
|1       |red     | abc     |  20       |
|2       |yello   | dps     |  30       |
|3       |blue    | gdf     |  40       |
|4       |pink    | abc     |  20       |
|5       |red     | dps     |  10       |
|6       |blue    | gdf     |   5       |

并且我想应用这样的可视化:创建了 house 和 school 的两个下拉菜单。

为了实现视觉效果,我使用了以下内容:

  1. 我将数据作为 pandas 数据框。
  2. 我使用altair代码如下:

import altair as alt

input_dropdown1 = alt.binding_select(options=['abc','dps','gdf'])
input_dropdown2 = alt.binding_select(options=['red','yello','blue','pink'])
selection1 = alt.selection_single(fields=['house'], bind=input_dropdown1, name='belonging ')
selection2 = alt.selection_single(fields=['school'], bind=input_dropdown2, name='origin ')

 
alt.Chart(df1).mark_point().encode(
    x='name_id:Q',
    y='duration:Q',
    color='house'
).add_selection(
    selection1,
    selection2
)

但是,代码未正确呈现。

当我尝试只有一个下拉菜单时 - 没有过滤发生。

我是第一次使用 altair。

这里的想法恰恰是绘制 name_id 与持续时间的关系图,并使用过滤器更仔细地查看每个房屋和学校的关系图。

如果有人帮助我,我会很高兴。

试试这个

import altair as alt

input_dropdown1 = alt.binding_select(options=['abc','dps','gdf'])
input_dropdown2 = alt.binding_select(options=['red','yello','blue','pink'])
selection1 = alt.selection_single(fields=['house'], bind=input_dropdown1, name='belonging ')
selection2 = alt.selection_single(fields=['school'], bind=input_dropdown2, name='origin ')

 
alt.Chart(df1).mark_point().encode(
    x='name_id:Q',
    y='duration:Q',
    color='house',
    ##### added the opacity ,here
    opacity=alt.condition(
         selection1 & selection2,
         alt.value(1),
         alt.value(0.1)
)).add_selection(
    selection1,
    selection2
)