可以使用 Altair 将 mark_rule 扩展到图表之外吗?

Can mark_rule be extended outside the chart with Altair?

有没有办法在不破坏图表轴的情况下使规则标记更长?如果我有这个:

random.seed(0)
df = pd.DataFrame({'x':[i for i in range(1,21)],'y':random.sample(range(1,50), 20)})
chart = alt.Chart(df).mark_area().encode(x='x',y='y')
ruler = alt.Chart(pd.DataFrame({'x':[5]})).mark_rule().encode(x='x')
chart+ruler

但我想要这个

:

你试过用更大的边距在顶部叠加一个空白图吗?所以叠加图只包括线,但由于底部有较大的边距,它会延伸到原始图之外。

您可以设置一个明确的 y 域,然后在 mark_rule 内设置 clip=False,但您还需要定义规则的 y 范围,因为默认情况下是延伸整个剧情:

import altair as alt
import pandas as pd
import random


random.seed(0)
df = pd.DataFrame({'x':[i for i in range(1,21)],'y':random.sample(range(1,50), 20)})
chart = alt.Chart(df).mark_area().encode(x='x', y=alt.Y('y', scale=alt.Scale(domain=(0, 50))))
ruler = alt.Chart(pd.DataFrame({'x':[5], 'y': [-10], 'y2': [50]})).mark_rule(clip=False, fill='black').encode(x='x', y='y', y2='y2')
chart+ruler