Altair直方图,可以给mark_rule起个名字吗?

Altair histogram, is it possible to give a name to the mark_rule?

我有一个数据框,我绘制了下面的图。

代码是这样的:

import altair as alt
alt.renderers.enable('default')

base = alt.Chart(df_800).properties()

bar = base.mark_bar().encode(
    x=alt.X('volumechange', bin=True, title='Volume Change'),
    y='count()'
)

rule = base.mark_rule(color='red').encode(
    x='mean(volumechange)',
    size=alt.value(5)
)

rule2 = base.mark_rule(color='orange').encode(
    x='median(volumechange)',
    size=alt.value(5),
)

bar + rule + rule2

我想添加一个图例或类似的东西来表明红色规则是体积变化的平均值,橙色是中值。这是我第一次使用 altair,感谢任何帮助。

Altair 中的图例是从颜色编码自动生成的,因此诀窍是让您的聚合成为一种格式,其中它们的标签是按颜色编码的列。这是您可以执行此操作的一种方法:

import pandas as pd
import numpy as np
df_800 = pd.DataFrame({'volumechange': np.random.randn(100)})

base = alt.Chart(df_800)

bar = base.mark_bar(color='lightgray').encode(
    x=alt.X('volumechange', bin=True, title='Volume Change'),
    y='count()'
)

aggregates = base.transform_aggregate(
    mean='mean(volumechange)',
    median='median(volumechange)',
).transform_fold(
    ['mean', 'median']
).mark_rule().encode(
    x='value:Q',
    color='key:N'
)

bar + aggregates