要实现带有实心水平条的背景,需要在Altair中使用area图层,并将数据中的y值设为恒定值。以下是一个代码示例:
import altair as alt
import pandas as pd
# 创建数据框
data = pd.DataFrame({'x': range(6), 'value': [1, 3, 2, 4, 6, 8]})
# 定义背景颜色
background_color = alt.Chart(pd.DataFrame({'y': [0, 2, 4, 6, 8, 10]})).mark_area(
opacity=0.2,
color='gray'
).encode(
y=alt.Y('y:Q', axis=None),
x=alt.X('min(x):Q', scale=alt.Scale(domain=(0, 5)), title=None),
x2=alt.X('max(x):Q', scale=alt.Scale(domain=(0, 5)), title=None)
)
# 定义数据点的散点图层
points = alt.Chart(data).mark_point(
color='black'
).encode(
x='x:Q',
y='value:Q'
)
# 合并图层并显示结果
(background_color + points).properties(width=600, height=400)