如何点击热图的正方形来过滤链接的条形图? (牵牛星)
How to click on square of heatmap to filter linked bar chart? (altair)
我正在尝试获取它,因此如果我单击热图的一个方块,相邻的条形图会显示有关该方块中表示的数据的附加信息(点击时热图方块应该 "light up"上)。下面的代码让热图按照我想要的方式工作,但我不明白为什么条形图不工作。
(此外,如果我改为 interval = alt.selection_single(encodings=['x','y'],条形图开始执行我想要它做什么,但随后热图停止工作。)
import altair as alt
from vega_datasets import data
cars = data.cars()
interval = alt.selection_single()
chart = alt.Chart(cars).mark_bar().encode(
x=alt.X('Miles_per_Gallon', bin=True),
y=alt.X('Horsepower', bin=True),
color=alt.condition(interval, 'count()', alt.value('lightgray'))
).properties(
selection=interval
)
hist = alt.Chart(cars).mark_bar().encode(
y='count()',
x='Origin'
).transform_filter(interval)
chart | hist
当您希望 single
或 multi
选择应用于不同的数据视图时,您需要指定选择适用的 fields
或 encodings
,以告诉第二个图表触发什么。例如:
alt.selection_single(encodings=['x', 'y'])
出于某种原因,虽然这打破了颜色条件 - 我认为这可能是 Vega-Lite 中与选择和合并相关的一些错误。您可以通过使用两种选择来解决这个问题,一种用于突出显示,一种用于过滤器:
import altair as alt
from vega_datasets import data
cars = data.cars()
highlight = alt.selection_single()
select = alt.selection_single(encodings=['x', 'y'])
chart = alt.Chart(cars).mark_rect().encode(
x=alt.X('Miles_per_Gallon', bin=True),
y=alt.X('Horsepower', bin=True),
color=alt.condition(highlight, 'count()', alt.value('lightgray'))
).add_selection(
highlight, select
)
hist = alt.Chart(cars).mark_bar().encode(
y='count()',
x='Origin'
).transform_filter(select)
chart | hist
我正在尝试获取它,因此如果我单击热图的一个方块,相邻的条形图会显示有关该方块中表示的数据的附加信息(点击时热图方块应该 "light up"上)。下面的代码让热图按照我想要的方式工作,但我不明白为什么条形图不工作。
(此外,如果我改为 interval = alt.selection_single(encodings=['x','y'],条形图开始执行我想要它做什么,但随后热图停止工作。)
import altair as alt
from vega_datasets import data
cars = data.cars()
interval = alt.selection_single()
chart = alt.Chart(cars).mark_bar().encode(
x=alt.X('Miles_per_Gallon', bin=True),
y=alt.X('Horsepower', bin=True),
color=alt.condition(interval, 'count()', alt.value('lightgray'))
).properties(
selection=interval
)
hist = alt.Chart(cars).mark_bar().encode(
y='count()',
x='Origin'
).transform_filter(interval)
chart | hist
当您希望 single
或 multi
选择应用于不同的数据视图时,您需要指定选择适用的 fields
或 encodings
,以告诉第二个图表触发什么。例如:
alt.selection_single(encodings=['x', 'y'])
出于某种原因,虽然这打破了颜色条件 - 我认为这可能是 Vega-Lite 中与选择和合并相关的一些错误。您可以通过使用两种选择来解决这个问题,一种用于突出显示,一种用于过滤器:
import altair as alt
from vega_datasets import data
cars = data.cars()
highlight = alt.selection_single()
select = alt.selection_single(encodings=['x', 'y'])
chart = alt.Chart(cars).mark_rect().encode(
x=alt.X('Miles_per_Gallon', bin=True),
y=alt.X('Horsepower', bin=True),
color=alt.condition(highlight, 'count()', alt.value('lightgray'))
).add_selection(
highlight, select
)
hist = alt.Chart(cars).mark_bar().encode(
y='count()',
x='Origin'
).transform_filter(select)
chart | hist