エラーバーしたい(.mark_errorbar

 1import altair as alt
 2import pandas as pd
 3
 4# データを準備する
 5data = pd.DataFrame(...)
 6
 7# ベースとなるチャートを作成する
 8base = alt.Chart(data).encode(
 9    alt.X("X軸のカラム名")
10)
11
12# Y軸のカラム名をプロットする
13marks = base.mark_point().encode(
14    alt.Y("Y軸のカラム名")
15)
16
17# エラーバーをプロットする
18errors = base.mark_errorbar().encode(
19    alt.Y("エラーバーの下限を表すカラム名"),
20    alt.Y2("エラーバーの上限を表すカラム名"),
21)
22
23# ベースチャートにマーカーとエラーバーを重ねる
24marks + errors

.mark_errorbarでエラーバーを作成できます。 エラーバーの下限と上限を表すカラム名を、alt.Yalt.Y2に指定します。

ただし、「エラーバー」しか表示されないため、その下地となるグラフ(=マーカー付きの散布図など)も同時に作成して、重ねて表示する必要があります。

 1# tmp(気温の平均値)とtmp_std(気温の標準偏差)
 2data["tmp_min"] = data["tmp"] - data["tmp_std"]
 3data["tmp_max"] = data["tmp"] + data["tmp_std"]
 4
 5# time(時刻)をX軸にする
 6base = alt.Chart(data).encode(alt.X("time"))
 7
 8# tmp(気温の平均値)をY軸にする
 9marks = base.mark_point().encode(alt.Y("tmp"))
10
11# tmp_minとtmp_maxをエラーバーにする
12errors = base.mark_errorbar().encode(
13    alt.Y("tmp_min"),
14    alt.Y2("tmp_max"),
15)
16
17marks + errors

エラーバー付きの散布図を作成する場合は、 mark_pointmark_errorbarを組み合わせて使います。

気温の変化を記録したい

 1def errorbars(
 2    data: pd.DataFrame,
 3    x: str,
 4    y: str,
 5    e: str
 6) -> dict[str, alt.Chart]:
 7
 8    copied = data.copy()
 9    copied["min"] = copied[y] - copied[e]
10    copied["max"] = copied[y] + copied[e]
11
12    base = alt.Chart(data).encode(alt.X(x))
13    marks = base.mark_point().encode(alt.Y(y))
14    errors = base.mark_errorbar().encode(
15        alt.Y("min"),
16        alt.Y2("max")
17    )
18    charts = {}
19    charts["errorbars"] = marks + errors
20    charts["marks"] = marks
21    charts["errors"] = errors
22    return charts

mark_pointでは、プロットしたい値を設定します。 ``mark_errorbarでは、alt.Yalt.Y2`にエラーバーの範囲を設定します。 エラーバーの取りうる範囲は、あらかじめ計算しておきます。

リファレンス