5

我想要一个交互式图表,所以我首先定义

click = selection_multi(fields=['species'])

在该encode()方法内部,以下效果很好:

color = condition(click, 
                  'species',
                  value('gray'))

但我宁愿使用自己的颜色palette,也不想要legend. 我可以通过以下方式实现这一点。

color = Color('species',
              scale=Scale(range=palette),
              legend=None)

但现在我别无选择!我可以同时拥有它们吗?

4

1 回答 1

6

要获得多选、您自己的调色板且没有图例,只需在内部指定所有这些color().

工作代码

import altair as alt
from vega_datasets import data
iris = data.iris()

click = alt.selection_multi(fields=['species'])
palette = alt.Scale(domain=['setosa', 'versicolor', 'virginica'],
                  range=['lightgreen', 'darkgreen', 'olive'])

alt.Chart(iris).mark_point().encode(
    x='petalWidth',
    y='petalLength',    
    color=alt.condition(click,
                        'species:N', alt.value('lightgray'), 
                        scale=palette,
                        legend=None)
).properties(
    selection=click
)

产生:

在此处输入图像描述

如果你点击任何一点,整个物种将根据颜色条件被选中和着色。(选定的点采用 的颜色,palette未选定的点显示为灰色。)

于 2018-05-21T05:27:52.720 回答