環境
- Python 3.12.1
- bokeh 3.4.1
- pandas 2.2.2
やりたいこと
横軸が日付である折れ線グラフを描画したいです。
以下のコードで折れ線グラフを描画できました。
sample.py
from bokeh.io import output_file, save
from bokeh.plotting import figure
import pandas as pd
df = pd.DataFrame({"date": ["2024-01-01", "2024-02-01"], "value": [10, 20]})
df["dt_date"] = pd.to_datetime(df["date"])
fig = figure(width=400, height=400, x_axis_type="datetime")
fig.line(x=df["dt_date"], y=df["value"])
fig.scatter(x=df["dt_date"], y=df["value"])
output_file("output.html")
save(fig)
問題
プロットする点が1点しかない場合、横軸が000000us
とマイクロ秒で表示されました。
df = pd.DataFrame({"date": ["2024-01-01", "2024-02-01"], "value": [10, 20]})
df["dt_date"] = pd.to_datetime(df["date"])
df = df.iloc[1:]
"Wheel zoom"機能を使って表示範囲を縮小すれば、01/01
を表示させることができますが、できれば最初から01/01
を表示させたいです。
解決
figure()
のx_range
引数で、軸の範囲を「前日から翌日」で設定することで、解決できまし指定しました。
kwargs = {}
if len(df) == 1:
center_datetime = df["dt_date"][0]
next_day = center_datetime + datetime.timedelta(days=1)
previous_day = center_datetime - datetime.timedelta(days=1)
x_range = (previous_day, next_day)
kwargs["x_range"] = x_range
fig = figure(width=400, height=400, x_axis_type="datetime", **kwargs)