0

我有下表:(只给出了多行的一个片段)

|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       |

我想应用一个可视化,这样:为房子和学校创建了两个下拉菜单。

为了做我的视觉,我使用以下内容:

  1. 我将数据作为熊猫数据框。
  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 与持续时间的图,并使用过滤器更仔细地查看每个房子和学校的图。

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

4

1 回答 1

1

试试这个

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
)

于 2020-11-29T04:42:25.613 回答