Altair python:背景中的实心水平条

Altair python: solid horizontal bars in the backgound

我想在 altair 中做这样的事情

到目前为止我完成的是以下内容,我不知道如何根据需要绘制背景

import pandas as pd
from vega_datasets import data

source = data.cars()

line = alt.Chart(source).mark_line().encode(
    x='Year',
    y='mean(Miles_per_Gallon)'
)

band0 = alt.Chart(pd.DataFrame({'y': [20]})).mark_rule(color='red').encode(y='y')
band1 = alt.Chart(pd.DataFrame({'y': [30]})).mark_rule(color='orange').encode(y='y')

line + band0 + band1

提前致谢! 洛雷娜

您可以通过 mark_recty2 编码 as per this gallery example and How to shade a region with Altair

import pandas as pd
from vega_datasets import data
import altair as alt

source = data.cars()
line = alt.Chart(source).mark_line().encode(
    x='Year',
    y='mean(Miles_per_Gallon)')

band0 = (alt.Chart(pd.DataFrame({'y': [0], 'y2':[30]}))
         .mark_rect(color='red', opacity=0.3)
         .encode(y='y', y2='y2'))
band1 = (alt.Chart(pd.DataFrame({'y': [20], 'y2':[35]}))
         .mark_rect(color='yellow', opacity=0.3)
         .encode(y='y', y2='y2'))

line + band0 + band1