Альтаир не может создать комбинацию выборов - PullRequest
1 голос
/ 22 апреля 2020

Я хочу создать интерактивную «легенду», которая позволит мне выбирать комбинации данных в разных столбцах. Например, если у нас есть эти данные:

data = {
    'type1': [1, 0, 0, 1, 0, 1],
    'type2': [1, 1, 1, 1, 0, 0],
    'type3': [1, 0, 0, 1, 1, 0],
    'id': ['test1', 'test2', 'test3', 'test4', 'test5', 'test6'],
    'fuel': [1, 10, 30, 50, 25, 20]
}
df = pd.DataFrame(data, columns=['id', 'fuel', 'type1', 'type2', 'type3'])

, что приводит к:
image

Теперь я хочу визуализировать комбинации различных «типов» .
Примерно так:
image
Так что, если я переключаю только type1, должен отображаться только test6.
Если я переключаю все типы, должны отображаться только test4 и test1.
Идеальным решением было бы сделать это с помощью одной легенды, возможно ли достичь этого?
Также возможно ли достичь этого с помощью нескольких графиков, как я пытаюсь сделать на изображении выше?
Я могу кажется, не понять это.

1 Ответ

0 голосов
/ 22 апреля 2020

Один из способов сделать это - создать выборку для каждого столбца, привязанную к флажку. Например:

import altair as alt
import pandas as pd

data = {
    'type1': [1, 0, 0, 1, 0, 1],
    'type2': [1, 1, 1, 1, 0, 0],
    'type3': [1, 0, 0, 1, 1, 0],
    'id': ['test1', 'test2', 'test3', 'test4', 'test5', 'test6'],
    'fuel': [1, 10, 30, 50, 25, 20]
}

sel = [
  alt.selection_single(bind=alt.binding_checkbox(name=field), fields=[field], init={field: False})
  for field in ['type3', 'type2', 'type1']
]

df = pd.DataFrame(data, columns=['id', 'fuel', 'type1', 'type2', 'type3'])

alt.Chart(df).transform_calculate(
    type1='toBoolean(datum.type1)',
    type2='toBoolean(datum.type2)',
    type3='toBoolean(datum.type3)',
).mark_point().encode(
    x='id',
    y='fuel',
    opacity=alt.condition(sel[0] & sel[1] & sel[2], alt.value(1), alt.value(0))
).add_selection(
    *sel
)

enter image description here

...