繁体   English   中英

更改 Altair 图例中的形状颜色

[英]Change shape color in an Altair legend

考虑以下改编自Altair 网站的代码。

import altair as alt
import pandas as pd

source = pd.DataFrame({
    'a': ['A', 'B', 'B', 'B', 'E', 'F', 'G', 'H', 'I'],
    'b': [28, 55, 43, 91, 81, 53, 19, 87, 52]
})
brush = alt.selection(type='single')

alt.Chart(source).mark_point(filled=True).encode(
    x='a',
    y='b:Q',
    shape='a',
    color=alt.condition(brush, 
                        alt.Color('b:N', legend=alt.Legend(columns=2, symbolFillColor='blue')),
                        alt.value(None)),
).add_selection(brush)

输出这个 plot:

在此处输入图像描述

当我单击一个数据点时,所有其他数据点都会消失,这没关系。

问题出在图例中,形状没有颜色,因为alt.value(None))

如何在保持选择的同时为图例内的形状设置不可见的颜色(当我单击使所有其他数据点消失的数据点时)?

我试过symbolFillColor='blue'symbolStrokeColor='blue'但它不会改变形状颜色。

谢谢:)

一种方法是设置默认标记颜色:

import altair as alt
import pandas as pd

source = pd.DataFrame({
    'a': ['A', 'B', 'B', 'B', 'E', 'F', 'G', 'H', 'I'],
    'b': [28, 55, 43, 91, 81, 53, 19, 87, 52]
})
brush = alt.selection(type='single')

alt.Chart(source).mark_point(filled=True, color='blue').encode(
    x='a',
    y='b:Q',
    shape='a',
    color=alt.condition(brush, 
                        alt.Color('b:N', legend=alt.Legend(columns=2)),
                        alt.value(None)),
).add_selection(brush)

在此处输入图像描述

symbolFillColorsymbolStrokeColor不起作用的原因是因为您将它们应用于颜色图例,而那些默认的 colors 将被编码覆盖。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM