我有一个数据框,并绘制以下图。
代码是这样的:
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,不胜感激。
答案 0 :(得分:2)
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