I’m trying to build a scatterplot in Altair where the color of the points is determined by a slider. In this example, I want to color in orange only the carse whose cylinders are equal to the one selected by the slider. The operator == inside the Altair condition doesn’t work. I tried different operators, the ones working are > >= < <= the ones not working are == !=
Here’s a non-working code:
slider = alt.binding_range(min=3, max=8, step=1, name='cyl')
selection = alt.selection_single(fields=['Cylinders'],
                                bind=slider, init={'Cylinders': 3})
alt.Chart(cars).mark_circle(size=60).encode(
    x="Miles_per_Gallon",
    y="Displacement",
    color=alt.condition(alt.datum.Cylinders == selection.Cylinders, 
                        alt.value('#f26414'), alt.value('lightgray'),
                       ),
).add_selection( 
    selection
)
How can I make equality works?
Advertisement
Answer
For equality, you can check if points are in the selection without using an operator:
color=alt.condition(selection, alt.value('#f26414'), alt.value('lightgray'))