#python #data-visualization #altair
#python #данные-визуализация #альтаир
Вопрос:
У меня есть следующая таблица: (из многих строк указан только фрагмент)
|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 |
И я хочу применить визуализацию таким образом, чтобы: были созданы два выпадающих меню для дома и школы.
Для создания моего визуального представления я использую следующее:
- У меня есть данные в виде фрейма данных pandas.
- Я использую код 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 в зависимости от продолжительности и использовать фильтры, чтобы более точно видеть график для каждого дома и школы.
Я был бы рад, если бы кто-нибудь мне помог.
Ответ №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 amp; selection2,
alt.value(1),
alt.value(0.1)
)).add_selection(
selection1,
selection2
)