在Altair中,可以使用“alt.Chart”函数创建一个基本的箱线图,并通过“transform_filter”函数来筛选和标记异常值。下面是一个展示如何自定义异常值外观和标记的示例代码:
import altair as alt
from vega_datasets import data
source = data.iowa_electricity()
base = alt.Chart(source).mark_boxplot(size=50).encode(
x='year:O',
y='net_generation:Q'
)
rule = alt.Chart(source).mark_rule(color='red').encode(
y='mean(net_generation):Q',
size=alt.value(2)
)
text = base.mark_text(align='left', dx=7).encode(
text=alt.condition(
alt.datum.net_generation > source.describe().loc['75%','net_generation'],
alt.datum.year,
alt.value('')
)
)
outliers = base.transform_filter(
alt.datum.net_generation > source.describe().loc['75%','net_generation']
).mark_point(filled=True, size=100, color='red')
(base + rule + text + outliers).properties(width=600)
在上述示例中,我们首先创建了一个基本的箱线图,并根据数据中的第75个百分位数筛选了异常值。然后我们使用“mark_point”函数设置异常值的样式,并使用“transform_filter”函数进行筛选。在“mark_text”函数中,我们使用“alt.condition”条件来标记那些超出上四分位数的数据点的文本。最后我们将这些部分组合在一起并设置了图表的宽度。