首页 > 解决方案 > Altair python:背景中的实心水平条

问题描述

我想在 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

提前致谢!洛雷娜

标签: pythonaltair

解决方案


您可以按照此图库示例如何使用 Altair 为区域着色mark_rect,通过y2编码来执行此操作。

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

在此处输入图像描述


推荐阅读