altair: подсказки mark_geoshape отключены при добавлении дополнительной диаграммы с выделением - PullRequest
0 голосов
/ 16 февраля 2020

У меня есть GeoDataFrame, который я строю как mark_geoshape-map (map_). Цвет и всплывающая подсказка основаны на заданном столбце c ('Pkw-Dichte'). Пока все работает нормально.

Затем я добавил еще одну диаграмму (легенду), которая позволяет фильтровать карту по состоянию ('bland'). Кажется, все работает, но теперь подсказка карты отключена. Это ошибка или я что-то здесь не так делаю?

Возможно, эта проблема связана не только с mark_geoshape, так как я столкнулся с такой же ошибкой в ​​сочетании с подсказками mark_boxplot. Я думаю, что-то связано с выбором.

bland_selection = alt.selection_multi(fields=['bland'])

map_ = alt.Chart(source).mark_geoshape(
).encode(
    tooltip=['Pkw-Dichte'],
    color='Pkw-Dichte'
).properties(
    height=700,
    width=500
).transform_filter(
    bland_selection
)

legend = alt.Chart(source).mark_rect(
).encode(
    y=alt.Y('bland:N', axis=alt.Axis(title='State', orient='right')),
    color=alt.condition(bland_selection,
                    alt.value('gray'),
                    alt.value('lightgray')),  
    tooltip=['bland:N'],
).add_selection(
    bland_selection
)


map_ | legend

enter image description here enter image description here

РЕДАКТИРОВАТЬ:

Вот воспроизводимый пример, включающий решение, добавив:

.add_selection(
    bland_selection
)

... на карту_карты.

Пример не совсем чистый, так как Я не выяснил, как сделать выборку, но она показывает смысл и решение проблемы:

import altair as alt
from vega_datasets import data

counties = alt.topo_feature(data.us_10m.url, 'counties')
source = data.unemployment.url


bland_selection = alt.selection_multi(fields=['id'])


map_=alt.Chart(counties).mark_geoshape().encode(
    color='rate:Q',
    tooltip=['rate:Q']
).transform_lookup(
    lookup='id',
    from_=alt.LookupData(source, 'id', ['rate'])
).project(
    type='albersUsa'
).properties(
    width=500,
    height=300
).transform_filter(
    bland_selection
).add_selection(
    bland_selection
)



chart=alt.Chart(counties).mark_rect().encode(
    y= alt.Y("id:O", bin=True),
    color=alt.condition(bland_selection,
                    alt.value('gray'),
                    alt.value('lightgray')),
    tooltip=['rate:Q']
).transform_lookup(
    lookup='id',
    from_=alt.LookupData(source, 'id', ['rate'])
).add_selection(
    bland_selection
)

map_ | chart
...