我一直在努力创建一个类似于这个EIA 图表的图表(链接页面上的数据):

我在带有置信区间带库示例的折线图中看到了一个使用 Altair 的类似示例,但我没有看到使用mark_errorband方法使用我自己的值显式设置“范围”的方法。该文档规定您可以使用 4 种方法之一来设置范围,但我不知道如何传入我自己的值。mark_errorband 示例让我相信这一定是可能的,但是我不知道如何完成它。
我很感激有关如何在 Altair 中实现最小-最大频带的任何指导。
您可以使用area带有y和y2编码的标记。例如:
import altair as alt
import pandas as pd
import numpy as np
x = np.linspace(0, 10)
y = np.sin(x) + 0.1 * np.random.randn(len(x))
df = pd.DataFrame({
'x': x,
'y': y,
'upper': y + 0.5 * (1 + np.random.rand(len(x))),
'lower': y - 0.5 * (1 + np.random.rand(len(x)))
})
line = alt.Chart(df).mark_line(
color='black'
).encode(
x='x',
y='y'
)
band = alt.Chart(df).mark_area(
opacity=0.5, color='gray'
).encode(
x='x',
y='lower',
y2='upper'
)
band + line
Run Code Online (Sandbox Code Playgroud)
在引擎盖下,mark_errorband本质上是 Vega-Lite 中的一个宏,它计算下限/上限并自动为您填充y和y2编码。