python - 自定义交互式图表中的图例和色标 `altair`

标签 python altair

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

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

encode() 方法中,下面的代码运行良好:

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

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

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

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

最佳答案

要获得多选、您自己的调色板且没有图例,只需在 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
)

产生:

enter image description here

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

关于python - 自定义交互式图表中的图例和色标 `altair`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50433842/

相关文章:

python - 将 pandas 列转换为 int 时出现类型错误

python - os.path.getsize(path) 或 os.stat

python-3.x - Altair 有 slider "play button"吗?

python - 如何在 Altair 中调整比例范围?

javascript - 在 Altair 绘图点击上运行 javascript

python - 使用 StandardScaler() 规范化 pandas 数据帧,排除特定列

c# - 如何在c#项目中集成python库

python - 如何在 python 单元测试中模拟连接错误和请求超时

python - Altair 热图刻度文本

python - 有没有办法将 SVG 路径编码为点形状?